本人之前没有做过网络方面的项目,对网络编程一知半解,最近写一个简单的网页遥控器程序,就是用网页绘制一个遥控器,然后点击遥控上的按钮,电视就会执行和真实遥控器相同的行为。于是写了一个简单的webserver,用C写的,写完后反复测试,发现服务器进程会莫名其妙的退出,很是诧异,通过加打印反复测试,发现问题出现在send函数上,这个函数怎么能出问题呢?当然不可能是这个函数出问题了,这个函数可是千锤百炼出来的,怎么会到我这里就有问题呢,通过查阅资料发现问题如下:
在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号。这个信号的缺省处理方法是退出进程。因此我的处理方法很简单,重新定义这个信号的处理方式,使用:
void signal_func(){
}
signal(SIGPIPE,signal_func);
这样程序就不会退出了。至于你想怎么处理,哪得看你了。
如果对"网页遥控器感兴趣",可以到这里下载:
http://download.csdn.net/detail/u011913612/9374213