我正在尝试将并行处理组件添加到单个线程单进程程序中。我只是在学习一些多处理方法,因此我们并不完全确定它们的能力。
我想要实现的程序逻辑:
此实施是否有效?示例代码:
check_timer() {
for(i = 0; i < 10; i++) {
pid_t pid = fork();
if(pid == 0) {
execute child 1 checks and possible executes..
exit(); // when completed
}
else {
parent maybe does something or just ends first round of for loop..
}
}
some implementation of wait(); to wait for all children to finish before leaving check_timer() function..
}
这会在父母的背景中同时创建多达10个子进程,然后等待孩子们完成吗?关于如何使用wait()的一些提示也会有所帮助。
答案 0 :(得分:2)
是的,您最终将获得11个流程。
您可能需要waitpid
函数,在没有更多子项(返回ECHILD
)之前调用该函数。
编辑:刚发现你需要pid_t pid = fork();
,而不是pid = pid();