int c;
printf(“测试主程式\n");
printf(“1——生成1个子进程\n");
printf(“0——退出\n");
scanf(“%1d",&c);
/*接收客户请求*/
if ( c == 0 
break;
ret = Plimread(TESTTYPE);
/*检查正运行进程数是否已到最大并取得令牌*/
if(ret < 0)
/*正运行进程数已到最大,不进行业务处理*/
{
printf(“main
limread failed!\n");
printf(“system busy,please wait a moment!\n");
}
else
if ( fork() == 0 
/*正运行进程数未到最大,生成子进程*/
{
/*进行相关业务处理*/
sleep(10);
/*假定业务处理时间为 10s*/
Plimwrite(TESTTYPE);
/*业务处理完毕,退还令牌,子进程退出*/
exit(1);
}
}
Plimend(TESTTYPE);
/*撤消队列*/
exit(1);
}
/* 编译方法:
cc -o ./ctltest ctltest.c
执行方法:
./ctltest
假如在10秒钟内欲连续生成5个子进程,那么在生成第5个子进程时,将失败;
等待10秒钟后,则可继续生成子进程。
*/
| htldm 回复于:2003-02-23 19:51:23 |
| 好! |
| muzx 回复于:2003-02-23 19:51:58 |
| 见好就收! |
| snowyshao 回复于:2003-02-24 08:57:03 |
| 用共享内存来实现不是更为方便? |
| zhongjl 回复于:2003-02-24 18:44:40 |
| 多此一举!! |
| apollo521 回复于:2003-02-25 20:54:27 |
| 不觉的麻烦吗?您是想告诉大家您会使用消息队列还是想告诉大家怎么方便、可行的控制并发进程数呢?想不通。。。用一个计数器实现不是很方便吗? |
| 海德 回复于:2003-02-25 22:46:11 |
您们能够说说您们的方法,具体点吧。 ![]() |
| zhongzhu 回复于:2003-02-27 16:28:20 |
| 假如在写回之前程式被kill掉,如何办?
apollo521 :多进程您怎么用计数器? |
| xzh2002 回复于:2003-02-27 16:40:12 |
| 好象用 ulimit 命令也能够 |
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




