您的位置:首页 > 理论基础 > 计算机网络

lighttpd源码学习

2015-08-28 17:10 531 查看
// 固定产生 10 个worker进程工作, 有worker退出时, 重新创建worker。
// 类似于lighttpd 的 watcher,worker模型
// 参考:http://bbs.chinaunix.net/thread-1251434-1-1.html

#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>

void child_main()
{
printf("child [%5d] is working.\n", getpid());
sleep(5);
printf("child [%5d] is done.\n", getpid());
exit(1);
}

int main()
{
unsigned int worker_num = 10;
int status;
pid_t pid;

while(1) {

if (worker_num > 0) {
pid = fork();
if(pid < 0) {
perror("fork");
exit(1);
}else if( pid == 0 ) { // child
child_main();
}else if( pid > 0 ) { // father
worker_num--;
}
}else{
// wait for a child to exit, and update worker_num
pid = wait(&status);
printf("father: chile [%5d] is done. Create a new one...\n", pid);
worker_num++;
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: