【求助】Linux C如何获取execvp返回值
各位,我想要获取一个子进程中由execvp启动的程序的返回值,实现代码如下:
传给这个函数的参数是:
filename=sh,argv[]={"sh", "-c", "hello &"};
按理来讲,如果execvp正常运行的话,子进程执行完sh -c hello &后会返回这个命令的执行结果给主进程
可是现在由于sh -c hello &在后台运行,如果程序hello不存在,用宏WIEXITSTATUS应该会得到误值,可是总0;而执行sh -c hello就能得到,仅仅是有无&的区别,为什么,怎么样才能获得前种情况的返回值?
传给这个函数的参数是:
filename=sh,argv[]={"sh", "-c", "hello &"};
按理来讲,如果execvp正常运行的话,子进程执行完sh -c hello &后会返回这个命令的执行结果给主进程
可是现在由于sh -c hello &在后台运行,如果程序hello不存在,用宏WIEXITSTATUS应该会得到误值,可是总0;而执行sh -c hello就能得到,仅仅是有无&的区别,为什么,怎么样才能获得前种情况的返回值?
int execute(const char *filename, const char *argv[])
{
pid_t pid = -1;
if (0 == (pid = fork())) {
execvp(filename, (char * const *) argv);
getsystime(strtime);
exit(127);
} else if (0 < pid) {
int status = -1;
wait(&status);
return status;
} else {
getsystime(strtime);
return pid;
}
return 0;
}
...全文
相关推荐
shell:《 C语言实现Linux Shell命令解释器》项目可以学习Linux系统编程能力,尤其是在多进程方面。可以了解到fork,execvp等重要的系统调用。另外可以深入理解Linux Shell的功能的实现手段。
一,实验简介《 C语言实现Linux Shell命令解释器》项目可以学习Linux系统编程能力,尤其是在多进程方面。可以了解到fork,execvp等重要的系统调用。另外可以深入理解Linux She
gcc: error trying to exec ‘cc1plus’: execvp: 没有那个文件或目录
"gcc编译错误,cc1plus找不到,与g++的关系,GCC编译过程,源码安装gcc,CentOS下g++安装,解决gcc/g++符号链接问题"在编程过程中,我们可能会遇到这样的错误:“gcc:
Linux C函数参考手册
Linux C函数参考手册是程序员们在使用C语言进行Linux系统编程时的重要参考资料。
用c语言实现的shell解释器
本文介绍了一个简单的命令行界面程序,它能够获取系统信息并根据用户身份显示不同提示符。程序支持基本命令解析,如cd改变目录,以及使用fork和execvp执行其他命令。通过循环读取用户输入,并在子进程中
android apk获取root权限方法总结
方法二:使用 exec 函数族在 Linux 编程中,我们可以使用 exec 函数族来执行 su 命令,从而获取 Root 权限。


