如何将execv用于位置未知的命令?

问题描述:

说我要生成一个进程并运行execvls执行命令,那么这是我要做的事:如何将execv用于位置未知的命令?

char * const parm[] = { "/usr/bin/ls","-l" , NULL }; 
if ((pid = vfork()) == -1) 
    perror("fork error"); 
else if (pid == 0) 
{ 
    execv("/usr/bin/ls", parm); 
} 

现在的问题是,在这里我已经硬编码在ls指令时( /usr/bin/ls)。现在假设我不知道某个特定命令出现在哪里,并且想要执行它,那么我该怎么做呢?我知道在一个普通的shell中,PATH变量是抬头实现的,但是在使用execv的C程序的情况下,我该如何实现它?

使用execvp(3)而不是execv(3)execvpexeclp的工作方式与execvexecl完全相同,只是它们搜索可执行文件的$PATH环境变量(有关完整详细信息,请参阅手册页)。

+0

+1 Dang,打我吧。 –