我正在从android Linux中的另一个可执行文件调用一个可执行文件。以下是相关代码:
...
int status = system("/system/bin/executable");
...
我的要求是不要等待executable
完成执行。意味着我想独立于调用它的可执行文件运行executable
。
我已经在互联网上进行搜索,但是没有找到如何使该系统调用不受阻碍的方法。请帮助我解决它。
答案 0 :(得分:5)
没有错误处理的system()
函数看起来像这样:
int system(char const *cmdline)
{
pid_t pid = fork();
if(pid == 0)
{
char const *argv[] = { "sh", "-c", cmdline, NULL };
execve("/bin/sh", argv, NULL);
_exit(1);
}
else
{
int status;
waitpid(pid, &status, 0);
return status;
}
}
命令本身由外壳解析,因此您可以使用常规的&
后缀将命令发送到后台。然后,外壳程序立即终止,将后台程序重新设置为PID 1(因此您的程序不负责收集僵尸),并且system()
返回。