免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1421 | 回复: 6
打印 上一主题 下一主题

fork问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-01-11 20:38 |只看该作者 |倒序浏览
我的程序是从数据库每fetch一条记录,就组个包往服务器上发,代码如下:

{
for(;
{
   EXEC SQL fetch ....
....
switch (fork())
{
case 0:
ret = send_maps(rcvbuf, sndbuf);
exit(0);
case -1:
printf("fork error\n";
exit(0);
default:
break;
}
}
create_file()
}
由于服务器有限制连接数,有什么好的办法可以控制fork进程的个数,而又不影响主进程的运行?
问题二:我这个程序fetch结束后,还要去服务器上取处理结果回来生成返回文件,这时候该如何判断所有fork出来的子进程都处理结束呢?只有所有fork出来的子进程处理完毕后,才能让主进程继续执行!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-01-12 09:08 |只看该作者

fork问题

为什么要用子进程的方式呢?不用也可以吧。

论坛徽章:
0
3 [报告]
发表于 2005-01-12 10:04 |只看该作者

fork问题

我看不用也可以的
如果真的要用,那就用进程间通信呀

论坛徽章:
0
4 [报告]
发表于 2005-01-12 10:12 |只看该作者

fork问题

看SIGCHLD
和waitpid

论坛徽章:
0
5 [报告]
发表于 2005-01-12 14:47 |只看该作者

fork问题

你可以设置一个fork的数目,每次循环加1,然后在循环中与服务器的最大连接数比较,超过的话就wait或者使用信号等待一个子进程结束,再继续循环。

论坛徽章:
0
6 [报告]
发表于 2005-01-12 18:41 |只看该作者

fork问题

由于fetch记录数过多,如果不fork,串行发送,全部处理时间太久了,用子进程可以大大提高处理速度的。
能否详细介绍一下SIGCHLD和waitpid函数的用法,谢了

论坛徽章:
0
7 [报告]
发表于 2005-01-13 09:02 |只看该作者

fork问题

man一下,或者google
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP