我正在为一个嵌入式Linux系统编写一个用户应用程序,我正在为这些设备使用诸如打开、关闭、读取、ioctl等常见功能.现在,我读到了关于EINTR的文章,指出函数被信号中断,但我不确定其含义.在我所有的示 routine 序中,有时完成了,例如ioctl(),有时没有完成,例如read().所以,我有点困惑.

我最好什么时候判断EINTR并重复函数调用?

推荐答案

见行动:http://pubs.opengroup.org/onlinepubs/009695399/functions/sigaction.html

SA_RESTART
  This flag affects the behavior of interruptible functions; that is, those 
  specified to fail with errno set to EINTR. If set, and a function specified 
  as interruptible is interrupted by this signal, the function shall restart 
  and shall not fail with EINTR unless otherwise specified. If the flag is not 
  set, interruptible functions interrupted by this signal shall fail with errno 
  set to EINTR.

默认情况下,您有sau重启行为,因此如果不使用信号,就不必担心EINTR.

Linux相关问答推荐

如何确定Linux上的最大静态TLS(线程本地存储)块大小?

如何将netcdf文件列表中的特定变量添加到不同的文件中?

在c++编译期间,什么是linux命令,它给出了链接库的路径?

AWK:按第一列匹配两个文件不起作用

将(覆盖)文件移动到不同位置的同名文件夹中

使用 AWK 过滤 Linux 输出

我想使用排序命令对第 5 列进行日期排序.但问题是格式不一致,有什么方法可以做到吗?

使用 sed 或 awk 在 linux 中将第一行中的一个单词替换为第二行中的另一个单词

所有进程的Linux环境变量

Linux 如何将主机文件作为用户的输入并将其调用到脚本中

如何在 Linux/Unix 上递归复制以abc开头的目录?

如何在 linux 'screen' 中搜索任何单词

用于将文件夹从本地计算机复制到远程服务器的 scp 命令语法

使用 RPATH 但不使用 RUNPATH?

如何优雅地退出 X11 事件循环?

如何获取 CPU 使用率

用于 GCC/G++ 的宏来区分 Linux 和 Mac OSX?

将 AWK 结果分配给变量

在 mac 上通过 ssh 连接到 amazon aws linux 服务器

如何让我的 Golang Web 服务器在后台运行?