如何让fork的几个子进程并行运行?

wan_j_zhang 2005-02-25 03:51:06
我有一个程序叫printnum,在当前路径下。
我又另外写了一个主程序,fork()几个子进程,然后让子进程去调用printnum这个程序,代码如下:

××××××××××××××××××××××××××××××××××××××××××××
int main(int argc, char* argv[])
{
while(1)
{

pid_t pid;
int status;

if ((pid = fork())<0)
status=-1;
else if (0==pid)
{
system("./printnum");
_exit(127);
}
else
{
waitpid(pid,&status,WNOHANG);
}

sleep(5);

}

exit(EXIT_SUCCESS);
}

××××××××××××××××××××××××××××××××××××××××××××

我想让fork的子进程能够同时并行工作,不要做成阻塞式的那种(非得一个子进程结束,另外一个子进程才能够调用),同时在运行过程中,又不能够出现僵尸进程。
请问,应当如何改造我的程序??
谢谢!
...全文
374 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wan_j_zhang 2005-02-25
  • 打赏
  • 举报
回复
OK,谢谢!
蓄丰 2005-02-25
  • 打赏
  • 举报
回复
fork产生的进程本来就是同时执行的吧。
你可以在fork里面调用你要执行的函数,那么这些函数将同时执行。

如果你要调用system 那么你上面的那一句应该加参数 & ,让它后台运行,就不会发生你说的阻塞了。
即:system("./printnum &");
试试吧,祝你成功

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧