一种简单的多进程编程模型

轻量级web服务器lighttpd中使用了一种比较简单的多进程编程模型,很容易理解,也很容易实现。基本思想就是使用一个监控进程,在加几个工作进程。具体的代码如下:

bool child = false; bool shutdown = false;//此数值在程序运行过程中会改变 int child_nums = 4; //此数值一般从配置文件中读取 if(child_nums > 0) { while(!child && !shut_down) { //若工作进程还未创建完,继续创建 if(child_nums > 0) { switch(fork()) { //创建进程时出错,返回 case -1: return; //若为子进程 case 0: child = true; break; //若为父进程 default: --child_nums; break; } }//若工作进程创建完了,则父进程调用wait函数监控工作进程 else { int status; if(-1 != wait(&status)) { ++child_nums; } else { swtich(errno) { //处理错误 } } } } if(!child) { //当shut_down为true时,做一些处理,比如关闭资源,连接等等。 } //子进程开始工作,执行任务 }

以后在Linux下面写多进程程序时,可以考虑这种方法。

你可能感兴趣的:(编程,linux,工作,lighttpd,任务,web服务)