本人初学操作系统,因此对一些函数不了解(在Linux环境下)。今天搞了2、3个小时才把execvp这个函数执行成功(在老师帮助之下)。特来把错误贴上,以防有人跟我犯一样的错误。
execvp作用是使子进程执行其他的代码。原型:int execvp(const char文件名,charconst argv[])。在执行成功是不返回值,发生错误返回-1.
描述:execvp函数与execv类似,不同之处在于它搜索path环境变量中列出的目录,以便在文件名不包含斜杠的情况下从文件名中查找文件的完整文件名。
此函数对于执行系统实用程序非常有用,因为它会在用户选择的位置查找这些程序。shell使用它来运行用户键入的命令。
但是没有实例,很多伙伴仍然会一头雾水。这里就以我已经编译通过的代码作为实例。
char*p[2];
char str1[]="abc";
char str2[]="";
p[0]=str1;
p[1]=str2;
//char* const p[]= {"abc", NULL};
if(execvp("/home/jerry/Desktop/experiment1/abc", p) == -1)
{
printf("fail to exec\n");
exit(1);
}
注明:可以直接写char*p[]={“abc”, NULL}.但第二个位置一定为空。这里的abc是我一个helloword工程中的可执行文件。如图
结果
老师的指点:
希望可以帮到大家。同时提前祝祖国生日快乐。