创建一个没有 fork() 的子进程

joh*_*lis 6 c operating-system fork child-process execvp

有没有办法在没有fork(),execvp()专门使用的情况下启动子进程?

zwo*_*wol 6

对你的问题的迂腐回答是否定的。创建新进程的唯一系统调用是fork. 底层的系统调用execvp(称为execve)将新程序加载到现有进程中,这是另一回事。

一些UNIX物种除了其他系统调用时fork(例如vforkrforkclone),创造了新的进程,但他们只有很小的变化fork本身,并没有一个是POSIX标准的一部分,它指定的功能,你可以指望什么是称自己为 Unix。

稍微有用的答案是您可能正在寻找posix_spawn,它是一个库例程包装forkexec单个操作,但我发现正确使用它比编写我自己的+子例程麻烦。天啊。forkexec