EINTR、ERESTARTSYS和SIGINT
1. 驱动使用down_interruptible,并在该函数返回非零值时返回-EINTR;应用程序不处理signal,使用CTRL-C退出应用程序:
驱动从down_interruptible返回,应用程序Terminate。
2. 驱动使用down_interruptible,并在该函数返回非零值时返回-ERESTARTSYS;应用程序不处理signal,使用CTRL-C退出应用程序:
驱动从down_interruptible返回,应用程序Terminate。
3. 驱动使用down_interruptible,并在该函数返回非零值时返回-EINTR;应用程序处理signal,使用CTRL-C:
驱动从down_interruptible返回。应用程序执行完signal处理函数后,所进行的系统调用返回负值,errno设置为EINTR。
4. 驱动使用down_interruptible,并在该函数返回非零值时返回-RESTARTSYS;应用程序处理signal,使用CTRL-C:
驱动从down_interruptible返回,结束当前系统调用,然后自动重新进入同一个系统调用。应用程序执行signal处理函数,并继续阻塞在系统调用中。应用程序侧看不到系统调用的重启过程。
5. 尽管man没有说ioctl会导致errno设置为EINTR,但实际上会的:这个取决于你的driver。
6. man 7 signal查看系统支持的signal和默认处理方式。
EINTR、ERESTARTSYS和SIGINT的更多相关文章
- linux signal 处理
v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VM ...
- Linux企业级开发技术(4)——epoll企业级开发之epoll例程
为了使大家更加深入了解epoll模型在企业应用中的使用,下面给出一段基于epoll的服务器代码,并在代码中添加了详细注释: #include <deque> #include <ma ...
- epoll完整例子
#include <deque> #include <map> #include <vector> #include <pthread.h> #incl ...
- EINTR与ERESTARTSYS
驱动中如果down_interruptible之类的函数被信号中断,驱动可以返回-EINTR或-ERESTARTSYS. 区别在于: 若返回-EINTR,应用程序执行的系统调用会返回表示错误的值,且e ...
- Linux编程下EAGAIN和EINTR宏的含义及处理
Linux中的EAGAIN含义 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中). linux下使用write\send ...
- 【网络编程】——connect函数遇见EINTR的处理
最近在公司项目中突然报错如下 “connect: Interrupted system call”, 经过查找代码发现是在创建 socket 中执行了 connect 函数失败导致.上网查阅资料发现这 ...
- EINTR错误
慢系统调用(slow system call):此术语适用于那些可能永远阻塞的系统调用.永远阻塞的系统调用是指调用有可能永远无法返回,多数网络支持函数都属于这一类.如:若没有客户连接到服务器上,那么服 ...
- 简单回射程序之处理accept返回EINTR错误的服务器程序版本
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <errno.h> ...
- SIGTERM、SIGKILL、SIGINT和SIGQUIT的区别
转自:http://blog.csdn.net/dai_xiangjun/article/details/41871647 SIGQUIT 在POSIX兼容的平台,SIGQUIT是其控制终端发送到进程 ...
随机推荐
- Python编程感悟
从今年起开始学习python,最开始是听得MIT的那门公开课,然后又看了一本入门的书籍.但是总是没有觉得python很好用.可能的原因现在想起来是:IDE始终找不到顺手的,另外R用得太舒服了- any ...
- CentOS云服务器数据盘分区和格式化
1. 查看数据盘信息 登录CentOS云服务器后,可以使用“fdisk -l”命令查看数据盘相关信息. 使用“df –h”命令,无法看到未分区和格式化的数据盘,只能看到已挂载的. [root@VM_7 ...
- Matlab位运算笔记
本文为转载其他地方的文章; MATLAB函数 1.matlab函数bitset 设置数的某一位二进制位为1. <Simulink与信号处理> 使用方法 C = bitset(A,bit) ...
- HTML5学堂 全新的HTML5/前端技术分享平台
HTML5学堂 全新的HTML5/前端技术分享平台 HTML5学堂是做什么的? HTML5学堂~http://www.h5course.com~由多名热爱H5的讲师们组成的一个组织.致力于构建一个前端 ...
- Android sdk 镜像服务器资源
大连东软信息学院镜像服务器地址:- http://mirrors.neusoft.edu.cn 端口:80北京化工大学镜像服务器地址:- IPv4: http://ubuntu.buct.edu.cn ...
- git 教程 ,常用命令
Git使用手册 http://www.cnblogs.com/lantingji/p/5942721.html git官网 https://git-scm.com/ Git的奇技淫巧 http://w ...
- 动态加载dll,并创建类对象放入到list中。
private List<IVisualControlsPlug> visualPlugs = new List<IVisualControlsPlug>(); public ...
- JS页面间传值
一:JavaScript静态页面值传递之URL篇 能过URL进行传值.把要传递的信息接在URL上. 例子: 参数传出页面Post.htm—> <input type="tex ...
- httplib
可爆破目录 import httplib import urllib def sendhttp(): data = urllib.urlencode({'@number': 12524, '@type ...
- oracle参数与启停
oracle随系统启动而启动 cs65-64桌面版orcle-11.2.0.4 启动监听器,后台进程,OEM. 注意: 如果只做一和三,只能启动后台进程,监听器不启动,如果只做二和三,只能启动监听器, ...