当前位置: 技术问答>linux和unix
一个关于accept()的问题。
来源: 互联网 发布时间:2015-12-24
本文导语: 这几天一直在分析安全扫描软件--nessus的源代码。在运行nessus的过程中我发现,nessus为每个客户端accept后分配的套接字号码是一样的,都是5,而每个处理客户请求的子进程用这个号码可以向自己的客户端发送消息...
这几天一直在分析安全扫描软件--nessus的源代码。在运行nessus的过程中我发现,nessus为每个客户端accept后分配的套接字号码是一样的,都是5,而每个处理客户请求的子进程用这个号码可以向自己的客户端发送消息,子进程之间不冲突,不知道这是什么道理,哪位大侠帮忙讲解一下?不胜感激!
nessus套接字框架的代码如下:
int main()
{
listen();
.
.
.
for( ; ; )
{
soc = accpet();
if(fork()==0)
{
利用soc接收消息处理请求;
}
}
}
nessus套接字框架的代码如下:
int main()
{
listen();
.
.
.
for( ; ; )
{
soc = accpet();
if(fork()==0)
{
利用soc接收消息处理请求;
}
}
}
|
猜测下:
如果soc每次都是相同的,而每个进程使用这个相同的soc都可以正确通讯,那么说明soc对于每一个进程是独立的(这个结论好像是错的)。
我感觉应该是正确通讯,但是是交互的。子进程调用soc通讯的时候就相当于主进程在调用,但是子进程和主进程如果不同步,顺序就是乱的。
不知道对不对。
如果soc每次都是相同的,而每个进程使用这个相同的soc都可以正确通讯,那么说明soc对于每一个进程是独立的(这个结论好像是错的)。
我感觉应该是正确通讯,但是是交互的。子进程调用soc通讯的时候就相当于主进程在调用,但是子进程和主进程如果不同步,顺序就是乱的。
不知道对不对。