我在Linux中创建进程时感到困惑.到目前为止,我认为我们可以通过调用以下系统调用来创建进程.
system()exec() 系统调用系列fork() 系统调用但:
system():但是当"系统"系统调用执行shell和shell上的输入可执行文件时,正在创建一个子进程来执行输入.所以shell调用子进程然后我们可以说fork正在为此创建进程.
exec系统调用:当这个系统调用时,用新进程写入当前正在运行的进程.因此它也创建了一个新进程但使用相同的地址空间.我认为它也在调用call fork来创建进程.
我很困惑以上事实是创建新进程或只有fork系统的可能方法.
Dip*_*pto 11
exec系统调用系列不会调用fork,也不会创建新进程.
它只用新二进制文件覆盖现有进程.
在linux用户程序中,fork是创建新进程的唯一功能.虽然fork内部调用clone和其他系统调用.
在其他的手中,system只是一个包装fork和exec.创建流程的实际任务是由forkin 完成的system.所以system不是创建新流程的方法.