Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 哪种功能即使在SA_重新启动时也会被信号中断?_C_Posix_Signals - Fatal编程技术网

C 哪种功能即使在SA_重新启动时也会被信号中断?

C 哪种功能即使在SA_重新启动时也会被信号中断?,c,posix,signals,C,Posix,Signals,当接收或处理信号时,POSIX中有哪些功能被中断的合理完整列表,即使没有信号处理程序或处理程序安装有SA_RESTART?一些例子: 选择 nanosleep 等等 POSIX说: 如果信号捕捉功能执行返回语句,则中断功能的行为应与该功能的单独描述相同,不安全功能除外 因此,您可以单独查看所有函数,也可以为EINTR和POSIX筛选手册页。我做了后者,得到: 接受,, 暂停, 凯特克洛斯, 猫, chmod, 周, 打盹儿, 接近, closedir, 连接 杜普, 呃,不, 执行官, 散播,

当接收或处理信号时,POSIX中有哪些功能被中断的合理完整列表,即使没有信号处理程序或处理程序安装有
SA_RESTART
?一些例子:

  • 选择
  • nanosleep
  • 等等
    • POSIX说:

      如果信号捕捉功能执行返回语句,则中断功能的行为应与该功能的单独描述相同,不安全功能除外

      因此,您可以单独查看所有函数,也可以为EINTR和POSIX筛选手册页。我做了后者,得到:

      接受,, 暂停, 凯特克洛斯, 猫, chmod, 周, 打盹儿, 接近, closedir, 连接 杜普, 呃,不, 执行官, 散播, fchdir, fchmod, fchown, fclose, fcntl, 福福鲁斯, 等等,, fgetwc, 福彭, 叉 fputc, fputwc, 弗雷open, 周, fsetpos, fsync, ftruncate, 格格伦特, 格格吉德, 格特格南, getmsg, getpwent, getpwnam, getpwuid, ioctl, 伊克霍恩, 利奥·利斯蒂奥, 洛克, mq_open, mq_接收, mq_send, msgop, msgrcv, msgsnd, 奈米睡眠, 打开 暂停, pclose, 投票 法洛卡特酒店, posix_mem_偏移量, posix_trace_create, posix_跟踪_获取_过滤器, posix_trace_getnext_事件, posix_跟踪_打开, posix_跟踪_开始, posix_键入_mem_获取_信息, posix_键入_mem_打开, printf, pthread_atfork, pthread_attr_getdetachstate, pthread_attr_getguardsize, pthread_attr_getinheritsched, pthread_attr_getschedparam, pthread_attr_getschedpolicy, pthread_attr_getscope, pthread_attr_getstack, pthread_attr_getstackaddr, pthread_attr_getstacksize, pthread_attr_init, pthread_barrier_init, pthread_barrier_wait, pthread_barrieratr_getpshared, pthread_barrieratr_init, pthread_cancel, pthread_cleanup_push, pthread_cond_init, pthread_cond_信号, pthread_cond_wait, pthread_condattr_getclock, pthread_condattr_getpshared, pthread_condattr_init, pthread_创建, pthread_detach, pthread_equal, pthread_getconcurrency, pthread_getschedparam, pthread_getspecific, pthread_join, pthread_key_create, pthread_key_delete, pthread_kill, pthread_mutex_getprioceiling, pthread_mutex_init, pthread_mutex_lock, pthread_mutex_timedlock, pthread_mutexattr_getprioceiling, pthread_mutexattr_getprotocol, pthread_mutexattr_getpshared, pthread_mutexattr_gettype, pthread_mutexattr_init, pthread_一次, pthread_rwlock_init, pthread_rBlock_rBlock, pthread_rwlock_timedrdlock, pthread_rwlock_timedwrlock, pthread_rwlock_unlock, pthread_rwlock_wrlock, pthread_rwlockattr_getpshared, pthread_rwlockattr_init, pthread_self, pthread_setschedprio, pthread_spin_init, pthread_spin_lock, pthread_spin_unlock, pthread_testcancel, putmsg, 阅读 recv, recvfrom, recvmsg, scanf, 选择, 选择_tut, sem_open,, sem_timedwait, 等等, semop, 送, sendmsg, 森托, shm_open, sigaction, 信号中断, 西格帕斯, sigprocmask, 信号集, SIG暂停, 西格维克, sigwaitinfo, statfs, 国家工作人员, 系统,, tcdrain, tcsetattr, tmpfile, 截断 乌拉尔姆, usleep, 等待 韦蒂德和
      write

      tcSetttr也不可重启,至少在Linux 2.6.18中是这样的

      如果有人想知道的话,会有更多关于什么是重启的,什么不是重启的细节:

      但是如果出现信号,其中一些总是返回-1,并带有
      EINTR
      ,而另一些则返回-1,其中包含
      EINTR
      ,仅当安装了没有
      SA_RESTART
      的信号处理程序时才返回。我的问题是如何区分这两种情况。如果接收到带有SA_RESTART的信号且信号处理程序返回,则会重新启动除msgop、semop、semwait和select之外的所有上述函数。msgop、semop、semwait始终使用EINTR返回-1,并且select的行为已定义为实现(可能失败或可能重新启动)。您是否有参考?我找不到POSIX中是否/在何处指定了它。由于Linux是一种非常流行的实现,因此可能值得注意的是,它在这方面与POSIX并不完全匹配。