如何在不考虑父亲的情况下使用C来生成一个独立的子进程来进行业务?
我想要产生几个过程,在它们被创建后不久,它们会在它们完成工作之前进入睡眠状态大约2分钟。
但是,我不希望父亲等到孩子完成,因为在此期间我想要产生更多的过程。
我在Linux上。
答案 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