聊聊Linux fork多进程并发服务器模型
2017-10-25 00:13
246 查看
一句话总结:主进程负责监听,子进程负责处理事务;注意父子进程共享socket句柄,关闭进程不用的句柄,避免句柄泄露;注意给子进程收尸,避免僵尸进程。
有点晚了,就简单上个模型吧
有点晚了,就简单上个模型吧
//子进程善后 void sigChildFun(int sigNO) { pid_t pid; int stat; while((pid = waitpid(-1, &stat, WNOHANG)) > 0); // 循环收尸(僵尸进程), 此时waitpid不会阻塞 } main() { pid_t pid; int fdListen, fdConnect; fdListen = socket(...); bind(fdListen, ...); listen(fdListen, ...); signal(SIGCHLD, sigChildFun); while (1) { fdConnect = accept(fdListen, ...); //父进程负责监听 if ((pid = fork()) == 0) //子进程 { close(fdListen); //子进程不需要监听,关闭共享的文件描述符,使引用计数-1 doAction(); //子进程处理函数 close(fdConnect); //处理结束后关闭连接的socket exit(0); } close(fdConnect); //父进程不需要连接socket,关闭使其由子进程管理,引用计数-1 } close(fdListen); //结束后父进程关闭监听socket }
相关文章推荐
- linux(一)------多进程并发服务器实现(fork)
- Linux 网络编程——并发服务器的三种实现模型
- Linux网络编程服务器模型选择之IO复用循环并发服务器
- 使用socket的Linux上的C语言helloworld多进程并发服务器
- Linux 下TCP并发服务器设计模型
- linux进程并发模型生产者和消费者模式编程
- 使用socket的Linux上的C语言helloworld多进程并发服务器
- LINUX环境并发服务器的三种实现模型
- LINUX环境并发服务器的三种实现模型
- Linux网络编程并发服务器模型
- UNIX网络编程卷1 服务器程序设计范式1 并发服务器,为每个客户请求fork一个进程
- 这个模型用来测试并发服务器,是否会产生僵尸进程
- (五十一)高并发服务器——多进程模型
- LINUX环境并发服务器的三种实现模型
- linux网络编程----->高并发--->多进程并发服务器
- Linux下一个单进程并发服务器的实例 使用select
- LINUX环境并发服务器的三种实现模型
- LINUX环境并发服务器的三种实现模型
- Linux之并发进程服务器
- PYTHON多进程并发WEB服务器(利用LINUX的FORK)