即使使用SA_RESTART,哪些function也会被信号中断?

当接收或处理信号时,是否有任何合理完整的POSIX中哪些函数被EINTR中断的列表,即使没有信号处理程序或者处理程序是否安装了SA_RESTART ? 一些例子:

  • select
  • nanosleep
  • 等等

tcsetattr也无法重启,至少在Linux 2.6.18中是这样

POSIX说:

如果信号捕获函数执行return语句,则中断函数的行为应如该函数单独描述,除非注意到不安全函数。

因此,要么单独查看所有函数,要么过滤EINTR和POSIX的手册页。 我做了后者,得到了:

接受,aio_suspend,catclose,catgets,chmod,chown,clock_nanosleep,关闭,closedir,连接,dup,errno,exec,fallocate,fchdir,fchmod,fchown,fclose,fcntl,fflush,fgetc,fgetwc,fopen,fork,fputc, fputwc,freopen,fseek,fsetpos,fsync,ftruncate,getgrent,getgrgid,getgrnam,getmsg,getpwent,getpwnam,getpwuid,ioctl,lchown,lio_listio,lockf,mq_open,mq_receive,mq_send,msgop,msgrcv,msgsnd,nanosleep,open,暂停,pclose函数,民意调查显示,posix_fallocate,posix_mem_offset,posix_trace_create,posix_trace_get_filter,posix_trace_getnext_event,posix_trace_open,posix_trace_start,posix_typed_mem_get_info,posix_typed_mem_open,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_barrierattr_getpsha 红色,pthread_barrierattr_init,pthread_cancel可以,pthread_cleanup_push,pthread_cond_init,pthread_cond_signal会,调用pthread_cond_wait,pthread_condattr_getclock,pthread_condattr_getpshared,pthread_condattr_init,在pthread_create,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_once,调用pthread_rwlock_init,pthread_rwlock_rdlock,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,select,select_tut,sem_open,sem_timedwait,sem_wait,semop,send,sendmsg,sendto,shm_open,sigaction,siginterrupt,sigpause,sigprocmask,sigset,sigsuspend,sigvec,sigwaitinfo,statfs,statvfs,system,tcdrain,tcsetattr,tmpfile, truncate,ualarm,usleep,wait,waitid和write