fork创建固定5个进程处理业务

xzy1990_25 2014-04-11 10:52:21
int main()
{
int pid;
int i = 0;

signal( SIGCHLD, SIG_IGN );
for ( i=0; i<5; i++ )
{
pid = fork();
if ( pid < 0 )
{
printf("fork failed\n");
return -1;
}
if( pid == 0 )
{
while (1)
{
//do something;
}
}

}
wait();
return 0;
}

创建5个进程做事,你觉得这样对吗, 感觉不是创建了5个进程
...全文
248 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
如此美丽的你 2014-04-15
  • 打赏
  • 举报
回复
不只5个吧!!!
硅谷大神 2014-04-13
  • 打赏
  • 举报
回复
我怎么感觉就是创建了5个子进程呢,因为每个子进程都是都用while一直在那循环并没有退出,父进程也会一直等待某个子进程的结束,然而5个子进程一直循环不结束,也就是说主进程也一直不会结束。
Gonefar 2014-04-13
  • 打赏
  • 举报
回复
用创建线程的方法不是很简单明了吗?
regainworld 2014-04-13
  • 打赏
  • 举报
回复
主进程要保存五个子进程的pid,循环检查子进程是否存活,死一个补一个
子进程要在while中调用exit,或在出while循环后调exit
xzy1990_25 2014-04-12
  • 打赏
  • 举报
回复
引用 2 楼 max_min_ 的回复:
显然这里不至5个进程阿!第二次循环就有2个进程分别再fork进程了,第三次就已经超过5个进程了! 不能这么循环搞
一共肯定不止5个进程,但是其他的进程都执行退出了,那怎么创建保留5个进程?
max_min_ 2014-04-11
  • 打赏
  • 举报
回复
显然这里不至5个进程阿!第二次循环就有2个进程分别再fork进程了,第三次就已经超过5个进程了! 不能这么循环搞
昵称很不好取 2014-04-11
  • 打赏
  • 举报
回复
在子进程里把pid打出来看看就知道有多少进程被创建了
buyong 2014-04-11
  • 打赏
  • 举报
回复
创建了5个子进程,子进程不会自己递归fork的。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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