当前位置:  技术问答>linux和unix

socket中的system调用问题

    来源: 互联网  发布时间:2016-08-02

    本文导语:  在socket主程序中,当有连接过来时,fork出一个子进程做数据处理工作,并且在主程序中利用signal(SIGCHLD,(sighandler_t)sig_waitchild)来等待子进程接收并回收子进程资源。但是在子进程中,又调用了system函数。结果,在程序...

在socket主程序中,当有连接过来时,fork出一个子进程做数据处理工作,并且在主程序中利用signal(SIGCHLD,(sighandler_t)sig_waitchild)来等待子进程接收并回收子进程资源。但是在子进程中,又调用了system函数。结果,在程序的运行过程中,在另一个终端上用netstat -antl命令查看,发现有很多进程并没有结束,状态是CLOSE_WAIT,如下所示:
tcp        1      0 192.168.1.238:51113         192.168.1.228:4809          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:4808          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:4802          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1749          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1750          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:4817          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:4816          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:4819          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:4818          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1769          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1761          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1762          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1533          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:4863          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1535          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:4862          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1677          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1673          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1160          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1675          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1163          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1671          CLOSE_WAIT
tcp        1      0 192.168.1.238:51113         192.168.1.228:1159          CLOSE_WAIT
这些进程是system函数产生的进程?该怎么结束他们???


|
lz漏了非常重要的一点
每创建一个子进程
父进程必须也要 close(confd);
才行

否则只有程序结束, confd才会被真正关闭

|
另外子进程结束后,在 close(confd);
后直接跟 exit
不然子进程也会继续执行后面的

|
"在子进程中,又调用了system函数。"

把子进程的
close(confd); 

放在system函数前面。

|
帮顶 

|
CLose_Wait是表示关闭时的4次握手没有完成啊。

|
     for (;;) {
         FD_ZERO(&rset);   //必须对每个连接都重新设置
         FD_SET(lisfd,&rset);
        nready = select(maxfd+1,&rset,NULL,NULL,NULL);    
        if(nready 

    
 
 

您可能感兴趣的文章:

  • 创建了2个套接字Raw socket和socket,都调用recvfrom(),一个专门捕获数据包,一个在9001端口监听UDP请求,怎么不行?
  • read一个socket, 发现read到的长度是0, 是否一定代表对方调用了close关闭了socket?
  • SOCKET调用close断开连接的时候回主动发FIN ACK包吗?
  • 用accept系统调用得到的socket能用在readv和writev上吗?
  • 如何知道一个用有没有权限调用bind()函数(socket编程的时候)
  • socket下调用write后出现:Broken pipe错误
  • 内核源文件/net/socket.c中调用其他模块的函数,该如何实现
  • PHP异步调用socket小例子
  • select+read 读服务器发送过来的数据, 假设服务器调用close后, 客户端的select是否返回这个socket可读?
  • unix操作系统上的socket服务器端程序在调用bind涵数的时候报错,是怎么回事了?
  • unix 下的socket 函数调用失败会写 errno. 哪位有 errno 的值 和 其对应意义 的 对照表???
  • socket编程,服务器会用bind()绑定端口,而客户端不用绑定端口就可以调用connect()。那么客户端的端口时系统自己分配的么?是何时绑定的?
  • 求助socket编程问题:C/S模式.客户端调用Winsock函数connect()的时候,返回错误码是10065(主机路由不可达).
  • 我调用socket向外发送消息,为什么在发送的同时,会打印字符串到屏幕上
  • 请教个问题:linux内核中socket系统调用的几个方法如何将客户端和服务端链接起来的?
  • 调用read函数读取socket流时,为何返回值总是1
  • qt和socket混合编程时,调用close,遇到的难题
  • PHP异步调用socket与php异步执行实例
  • socket system wget在程序中使用的奇怪现象.该怎么解决呢
  • 使用socket的accept()函数时Interrupted system call问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • java命名空间java.net类socket的类成员方法: getport定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: getlocalport定义及介绍
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • java命名空间java.net类socket的类成员方法: getinetaddress定义及介绍
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • java命名空间java.net类socket的类成员方法: isconnected定义及介绍
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3