Linux函数accept中断处理
来源:互联网 发布:美工课小房子教案 编辑:程序博客网 时间:2024/06/05 01:38
1 背景
在Linux socket编程中(类似于《Linux socket编程案例》),服务器使用accept()阻塞模式等待客户端连接,在等待过程中,使用Ctrl+C来中断程序(产生SIGINT信号)。由于希望中断后先进行一些清理操作(例如释放内存)再退出程序,使用signal函数来捕获了SIGINT信号:
signal(SIGINT, App_exit);说明:App_exit()是自定义的函数,在其中做函数退出清理操作:
static void App_exit(int signo){...if ( socket_fd != -1) { close( socket_fd ); socket_fd = -1;}...}
由于accept()函数使用到socket_fd,并且正在阻塞。所以关闭socket_fd之后出现错误:
Bad file descriptorSegmentation fault (core dumped)2 解决方法
在App_exit()中做清理操作之后,就要结束程序,不再返回到被中断处。在App_exit()中的末尾添加_exit()函数即可。
_exit(0);
参考资料
[1]关于accept被信号中断的问题
[2]C++中如何中止accept
[3]Socket进程处理被中断的系统调用及Accept函数返回EINTR错误处理
[4]中断被Socket.Accept阻塞的线程
[5]如何中断阻塞方式accept调用
如何中断阻塞方式accept调用
0 0
- Linux函数accept中断处理
- Socket进程处理被中断的系统调用及Accept函数返回EINTR错误处理
- linux中断子系统(一) - 注册系统中断处理函数
- linux中断子系统(二) - 注册用户中断处理函数
- Linux内核中断模块之中断处理函数描述
- LINUX系统中断处理结构及中断函数的实现
- linux 中断和中断处理
- Linux中断子系统-中断处理
- Linux-中断和中断处理
- 中断处理函数 asm
- 中断处理函数
- 中断处理函数
- 时钟中断处理函数
- 中断处理函数
- GPIO中断处理函数
- 中断函数和中断处理函数
- Linux套接字通信常用函数-accept
- Linux网络编程之accept函数
- sqlplus登录Oracle时ORA-01017: invalid username/password; logon denied的错误
- BIRT实现组内跨行计算
- objectForKey与valueForKey的区别
- 游戏设计的艺术:一本透镜的书——第九章 体验存在于玩家头脑里
- obj-c属性的新的特性
- Linux函数accept中断处理
- Leetcode|happy number
- Opc Client 写入String 问题
- 显示卡生产流水线揭密
- python解压压缩包的几种方法
- code hunt 题解八(java版)
- 传智播客-20150625表达式
- UIWebView 背景色、字体大小、字体颜色设置
- 游戏设计的艺术:一本透镜的书——第十章 某些元素是游戏机制