产生一个独立的孩子

时间:2011-05-15 11:59:52

标签: c linux process spawn

如何在不考虑父亲的情况下使用C来生成一个独立的子进程来进行业务?

我想要产生几个过程,在它们被创建后不久,它们会在它们完成工作之前进入睡眠状态大约2分钟。

但是,我不希望父亲等到孩子完成,因为在此期间我想要产生更多的过程。

我在Linux上。

3 个答案:

答案 0 :(得分:2)

使用fork(2)简单地生成所需数量的进程,然后在父进程中调用exit()。孤儿将由init程序采用。

答案 1 :(得分:2)

如果您想要创建多个子进程在创建后立即执行“自己的业务”,则应使用vfork()(用于创建新进程而不完全复制父进程的地址空间)和{ {1}}家庭用任何你想要的东西替换子进程的图像。

如果您不希望父亲等到孩子完成,您应该利用异步信号处理。子进程结束时会发送SIGCHLD。因此,您可以将exec()放在SIGCHLD的信号处理程序中而不是父进程中,并让信号处理程序收集子进程的返回状态。

以下是玩具示例:

wait()

答案 2 :(得分:1)

使用fork()。 The fork() System Call

pid_t pid = fork (); 
if (pid < 0) 
  // Error
else if (pid == 0) 
  // Child Process
  // Sleep 2 min. ?!
else 
  // Code for Father