execvp出错

本人初学操作系统,因此对一些函数不了解(在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工程中的可执行文件。如图在这里插入图片描述
结果在这里插入图片描述
老师的指点:
在这里插入图片描述
在这里插入图片描述

希望可以帮到大家。同时提前祝祖国生日快乐。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值