当前位置: 技术问答>linux和unix
unix下,多进程socket 服务器问题
来源: 互联网 发布时间:2015-11-06
本文导语: 本人没做过unix下socket的开发,现要做一个多进程socket服务器,请各位大侠帮忙。。 任务要求:控制子进程数为10个,一个子进程对应一个客户端连接socket,响应客户端请求信息(根据请求信息查询服务器的log文件),进...
本人没做过unix下socket的开发,现要做一个多进程socket服务器,请各位大侠帮忙。。
任务要求:控制子进程数为10个,一个子进程对应一个客户端连接socket,响应客户端请求信息(根据请求信息查询服务器的log文件),进行信息交互。
问题:1、子进程数通过一个变量计数控制,还是有别的典型方法?
2、如何做到当客户端close后,服务器端做出响应,杀掉服务器对应的子进程?
任务要求:控制子进程数为10个,一个子进程对应一个客户端连接socket,响应客户端请求信息(根据请求信息查询服务器的log文件),进行信息交互。
问题:1、子进程数通过一个变量计数控制,还是有别的典型方法?
2、如何做到当客户端close后,服务器端做出响应,杀掉服务器对应的子进程?
|
在父进程里计数。
man signal
read返回0
man signal
read返回0
|
signal(SIGCHLD,sig_chld); //处理僵尸,获取SIGCHLD信号
void sig_chld(int signo)//儿子一中断就消息触发
{
//这里放你要处理的代码
}
void sig_chld(int signo)//儿子一中断就消息触发
{
//这里放你要处理的代码
}
|
对,可以这样计数,但这个数你得用一个信号灯或其他的保护起来。以防止并发产生错误计数。
捕捉信号就用signal()函数。之后在回调函数中处理(count--)。
捕捉信号就用signal()函数。之后在回调函数中处理(count--)。