linux网络编程-Socket编程,写了结束子进程的程序,但是运行起来有问题

问题描述

Socket编程,写了结束子进程的程序,但是运行起来有问题
在ubuntu上写的一个socket的程序,select并发的,当客户端断开,子进程要被结束,测试在ubuntu本地运行是没有问题的,同样的程序上传到服务器(CentOS)上,发现客户端关闭后,服务端没有办法结束生成的子进程,请问各位大大这是什么原因造成的啊...

出现问题的代码如下
主函数中写了

signal(SIGCHLDsig_child);

函数实现如下:

    void sig_child(int signo)    {        pid_t c_pid;        int stat;        while((c_pid=waitpid(-1&statWNOHANG))>0)              printf(""child %d terminatedn""c_pid);        return;    }

一直没能解决这个问题,还望有高手指点一下...
谢谢!!

解决方案

建议你最好别使用信号,最好的也是最我稳健的方法就是使用callback函数。

时间: 2024-12-21 22:48:50

linux网络编程-Socket编程,写了结束子进程的程序,但是运行起来有问题的相关文章

linux c语言 socket编程 recv每次收到一样的数据

问题描述 linux c语言 socket编程 recv每次收到一样的数据 #include #include #include #include #include #include #include #include #include int main() { int so=socket(AF_INET,SOCK_STREAM,0),r; sockaddr_in addr; hostent hp; hp=gethostbyname("www.csdn.net"); addr.sin_

网络编程-socket编程中的accept函数

问题描述 socket编程中的accept函数 一个简单的客户/服务器的实现中,connect成功了,但是accept失败,它的返回值为0,这是怎么回事? 解决方案 已解决,原来是其中 = 的运算级别问题,加了个括号就行了,多谢楼上各位! 解决方案二: 名称 accept() 接收一个套接字中已建立的连接 使用格式 #include <sys/types.h> #include <sys/socket.h> int accept(int sockfd,struct sockaddr

c语言 socket编程-socket 编程问题(C语言)

问题描述 socket 编程问题(C语言) 客户端将要处理的文件/数据传输到服务器端,服务器端对此文本文件进行处理,并将结果传输给客户端,客户端进行显示. 我初学socket编程,请大家多指教.使用C语言 解决方案 没看懂你想问什么的 基于socket 的网络编程其实是很简单的,而且看你的意思是想使用C/S 架构的,因为是属于传输层面的东西,自然用到tcp.UDP ,很久没写这些东西了,可以告诉你,顺便回忆一下: 下面把网络连接的搭建过程给你说一下吧: 首先是client: 1.socket -

vc++编程问题-谁能帮忙把这个VC++程序上运行的纵坐标改动一下啊,跪求,急用……

问题描述 谁能帮忙把这个VC++程序上运行的纵坐标改动一下啊,跪求,急用-- 把第一个纵坐标改成0-20,第二个改成0-500,现在不能改动,而且已改动两个都会同时变化,且图形并不随改动值的变化而变化,急用,跪求了--不胜感激-- void CScope::DrawAxis(CDC *pDC) { CFont *pOldFont; int i,nPosY; CString str; pOldFont = pDC->SelectObject(&m_FontAxis); pDC->SetT

socket编程-Windows 和Linux 网络性能测试

问题描述 Windows 和Linux 网络性能测试 在windows 和linux 之间进行socket编程,进行互相收发数据.在收发完成之后,想具体的测试一下性能,有什么好的办法吗? PS:windows和Linux用的都是千兆的网卡,想测试一下具体的性能指标. 解决方案 windows下有性能计数器,linux下也有一些性能诊断的工具,可以使用.至于收发本身可以用压力测试工具测试 解决方案二: windows有perf工具来分析查看 Linux下面是gprof等 解决方案三: 采用wire

java-初学Java网络编程socket,为何我的服务器打不开?

问题描述 初学Java网络编程socket,为何我的服务器打不开? 初学Java网络编程socket,写了个服务器,但是打不开,求指导.代码如下 import java.io.*; import java.net.*; import java.util.*; import javafx.application.Application; import javafx.application.Platform; import javafx.scene.Scene; import javafx.scen

php的socket编程详解_php技巧

php的socket编程算是比较难以理解的东西吧,不过,我们只要理解socket几个函数之间的关系,以及它们所扮演的角色,那么理解起来应该不是很难了,在笔者看来,socket编程,其实就是建立一个网络服务的客户端和服务端,这和mysql的客户端和服务端是一样的,你只要理解mysql的客户端和服务端是怎么一回事,你就应该能够理解下面我要讲的东西吧. 关于socket编程所涉及到的网络协议,什么TCP啊,UDP啊,什么socket三次握手等等,这些网络协议网上有很详细的解释,这里不讲,只截个sock

Linux中的c++编程&amp;amp;lt;&amp;amp;lt;语法

问题描述 Linux中的c++编程<<语法 请教一下各位:*env << "Usage: " << progName中的<<到底起到什么作用,这是什么语法? 解决方案 <<就是一个输出流操作符,operator 解决方案二: 你的env应该是一个ostream等输出流对象,这个就相当于输出后面的字符串和变量到对应的管道. 解决方案三: Linux的shell编程--语法Linux下C++ Socket编程linux C++ 多

Linux网络编程socket选项之SO_LINGER,SO_REUSEADDR

                       Linux网络编程socket选项之SO_LINGER,SO_REUSEADDR Linux网络编程中,socket的选项很多.其中几个比较重要的选项有:SO_LINGER(仅仅适用于TCP,SCTP), SO_REUSEADDR.   SO_LINGER 在默认情况下,当调用close关闭socke的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,然后close才返回.