所以我正在开发一个多次执行某项任务的程序.我已经使用线程编写过程序,但现在我需要使用fork()进程.
使用线程,我只需创建指定数量的线程,让它们执行一个函数(更改共享内存中的变量),然后最终执行在共享内存中使用最终值的内容.
然而,现在我想做同样的事情,但我不知道怎么做,因为每次我调用fork()它本质上都是双倍的.很明显,如果我在forloop中调用fork(),那么每个父进程和子进程将通过自己的循环调用fork().
所以我的问题简而言之:如何使用fork创建一个确切数量的子进程(假设我需要5个子进程),并让我的父进程等到这5个进程完成后再继续运行?
谢谢您的帮助!
我认为这会奏效:
int processes = 5;
int i;
for (i = 0; i < processes; ++i) {
if (fork() == 0) {
// do the job specific to the child process
...
// don't forget to exit from the child
exit(0);
}
}
// wait all child processes
int status;
for (i = 0; i < processes; ++i)
wait(&status);
Run Code Online (Sandbox Code Playgroud)