我正在编写UNIX shell,我必须使用execv()系统调用来创建一个进程.其中一个参数execv()是可执行文件的文件路径.因此,如果有人输入/bin/ls,它将运行ls可执行文件.但我需要的是一个函数,当ls输入时,它将搜索文件路径ls(如which命令).是否有允许我这样做的功能?
不幸的是,这是一个我不允许使用的学校项目execvp().我需要实现一些路径搜索功能,然后将该文件路径添加到execv()参数中.
使用PATH = getenv("PATH")摆脱环境的路径字符串,然后用连续呼叫strtok(PATH,":"),然后strtok(NULL,":")从路径解析出PATH字符串转换成数组char **path,您将需要与分配malloc().将path[x]+ '/'+ argv[0]放入缓冲区,并使用access(buffer, X_OK)以查看是否可以在该路径位置执行文件,如果是,请执行您的execv(buffer,argv).