我们可以使用c在linux中创建进程的方法有多少

Raj*_*har 6 c linux shell

我在Linux中创建进程时感到困惑.到目前为止,我认为我们可以通过调用以下系统调用来创建进程.

  1. system()
  2. exec() 系统调用系列
  3. fork() 系统调用

但:

  1. system():但是当"系统"系统调用执行shell和shell上的输入可执行文件时,正在创建一个子进程来执行输入.所以shell调用子进程然后我们可以说fork正在为此创建进程.

  2. exec系统调用:当这个系统调用时,用新进程写入当前正在运行的进程.因此它也创建了一个新进程但使用相同的地址空间.我认为它也在调用call fork来创建进程.

我很困惑以上事实是创建新进程或只有fork系统的可能方法.

Dip*_*pto 11

exec系统调用系列不会调用fork,也不会创建新进程. 它只用新二进制文件覆盖现有进程.

linux用户程序中,fork是创建新进程的唯一功能.虽然fork内部调用clone和其他系统调用.

在其他的手中,system只是一个包装forkexec.创建流程的实际任务是由forkin 完成的system.所以system不是创建新流程的方法.