我想比父进程更早地运行子进程。我只想使用来自子进程的 execv 调用,所以我使用 vfork 而不是 fork。
但是假设 execv 失败并返回,我想从我正在调用 vfork 的函数中返回非零值。
像这样的东西,
int start_test()
{
int err = 0;
pid_t pid;
pid = vfork();
if(pid == 0) {
execv(APP, ARGS);
err = -1;
_exit(1);
} else if(pid > 0) {
//Do something else
}
return err;
}
上面的代码是正确的,还是我应该使用其他机制来比父母更早地运行孩子?
在某些链接上,我读过,我们不应该修改通过 vfork 创建的子进程中的任何父资源(我正在修改 err 变量)。