1背景编程
在Linux套接字编程(类似于《Linux socket编程案例》 )中,服务器使用accept )阻塞模式等待客户端链路,并在等待期间使用Ctrl C中断程序(生成SIGINT信号) 中断后,想进行内存释放等清理操作后退出程序,所以使用signal函数捕获了SIGINT信号:服务
signal(sigint,App_exit );
说明: App_exit ()是一个自定义函数,用于结束函数清理操作并执行:
staticvoidapp_exit(intsigno ) )。
{
.
if(socket_FD!=-1 ()
关闭(socket _ FD;
socket_fd=-1;
}
.
}
accept ) )函数用于socket_fd,因为它被阻止了。 因此,关闭socket_fd后发生错误: socket
bad文件描述符
分段故障(酷睿双核)。
2解决方法
在App_exit ()中执行清理操作后,将退出程序,并且不会返回到中断的位置。 在App_exit ()的末尾添加_exit ) )函数即可。 函数
_exit(0;
参考资料. net
[1]关于accept被信号中断的问题线程
[2]如何在c上停止接受博客
[3]套接字进程处理中断的系统调用和Accept函数返回到EINTR错误处理进程
[4]中断被socket.accept阻止的线程ip
[5]中断阻塞方式accept调用的方法
-----------------
作者: OneSea-V3.0
来源: CSDN
译文: 3359 blog.csdn.net/q 1302182594/article/details/46647413
本文是博客的原创文章。 转载请附上博文连接。 存储器