什么是POSIX取消点?

Cor*_*her 18 sockets multithreading posix network-programming pthreads

什么是POSIX取消点?我正在寻找POSIX取消点的确切列表.

我这么问是因为我有一本书,说accept()select()是取消点,但我已经看到了在互联网上声称,他们没有网站.

此外,如果Linux取消点与POSIX取消点不同,我也想要它们的列表.

Jon*_*ler 21

POSIX 1003.1-2003标准给出了系统接口部分列表,然后基本信息,然后线程(直接链接 A.雷克斯提供).(新增:POSIX 1003.1-2008现已在网上提供(所有3872页,PDF和HTML).你必须注册(免费).我从Open Group Bookstore获得它.)

取消积分

当线程执行以下功能时,将发生取消点:

  • 接受()
  • aio_suspend()
  • clock_nanosleep()
  • 关()
  • 连接()
  • 科瑞()
  • fcntl()(当cmd参数为F_SETLKW时)
  • fdatasync()
  • FSYNC()
  • 的getMsg()
  • 将getpmsg()
  • 提供lockf()
  • 则mq_receive()
  • 则mq_send()
  • mq_timedreceive()
  • mq_timedsend()
  • msgrcv()
  • 的msgsnd()
  • 则msync()
  • 了nanosleep()
  • 打开()
  • 暂停()
  • 轮询()
  • PREAD()
  • PSELECT()
  • 那么pthread_cond_timedwait()
  • 调用pthread_cond_wait()
  • 在pthread_join()
  • pthread_testcancel()
  • putmsg()
  • putpmsg()
  • PWRITE()
  • 读()
  • readv()
  • 的recv()
  • recvfrom的()
  • recvmsg()
  • 选择()
  • sem_timedwait()
  • sem_wait()
  • 发送()
  • SENDMSG()
  • 发送至()
  • 了sigpause()
  • sigsuspend()
  • sigtimedwait()
  • 调用sigwait()
  • sigwaitinfo()
  • 睡觉()
  • 系统()
  • tcdrain()
  • usleep()函式
  • 等待()
  • waidid()
  • waitpid函数()
  • 写()
  • writev可以获得()


当线程执行以下功能时,也可能发生取消点:


  • 访问()
  • asctime()
  • asctime_r()
  • catclose()
  • catgets()
  • 的catopen()
  • closedir()
  • closelog()
  • ctermid()
  • 的ctime()
  • ctime_r()
  • dbm_close()
  • dbm_delete()
  • dbm_fetch()
  • dbm_nextkey()
  • dbm_open()
  • dbm_store()
  • dlclose()
  • dlopen的()
  • endgrent()
  • endhostent()
  • endnetent()
  • endprotoent()
  • endpwent()
  • endservent()
  • endutxent()
  • FCLOSE()
  • fcntl()(对于cmd参数的任何值.[推测除了列出的F_SETLKW.]
  • fflush()
  • 龟etc()
  • fgetpos()
  • 与fgets()
  • fgetwc()
  • fgetws()
  • fmtmsg()
  • fopen()函数
  • 执行fpathconf()
  • fprintf中()
  • fputc()函数
  • fputs()的
  • fputwc()
  • fputws()
  • FREAD()
  • freopen函数()
  • fscanf()函数
  • FSEEK()
  • fseeko()
  • fsetpos()
  • FSTAT()
  • FTELL()
  • ftello()
  • FTW()
  • fwprintf()
  • FWRITE()
  • fwscanf()
  • 的getaddrinfo()
  • GETC()
  • getc_unlocked()
  • getchar函数()
  • getchar_unlocked()
  • GETCWD()
  • GETDATE()
  • getgrent()
  • getgrgid()
  • getgrgid_r()
  • getgrnam()
  • getgrnam_r()
  • gethostbyaddr()
  • 的gethostbyname()
  • gethostent()
  • gethostid()
  • 的gethostname()
  • getlogin()
  • getlogin_r()
  • 则getnameinfo()
  • getnetbyaddr()
  • getnetbyname()
  • getnetent()
  • getopt()(如果opterr非零.)
  • getprotobyname()
  • getprotobynumber()
  • getprotoent()
  • 的getpwent()
  • getpwnam()
  • getpwnam_r()
  • getpwuid()
  • getpwuid_r()
  • 得到()
  • getservbyname()的
  • 了getservbyport()
  • getservent()
  • getutxent()
  • getutxid()
  • getutxline()
  • getwc()
  • getwchar()
  • getwd()
  • 水珠()
  • iconv_close子()
  • iconv_open子()
  • 的ioctl()
  • 链接()
  • 当地时间()
  • 则localtime_r()
  • lseek的()
  • LSTAT()
  • mkstemp()
  • mktime()
  • nftw()
  • 执行opendir()
  • openlog()
  • 的pathconf()
  • pclose函数()
  • PERROR()
  • POPEN()
  • posix_fadvise()
  • posix_fallocate()
  • posix_madvise()
  • posix_openpt()
  • 的posix_spawn()
  • posix_spawnp()
  • posix_trace_clear()
  • posix_trace_close()
  • posix_trace_create()
  • posix_trace_create_withlog()
  • posix_trace_eventtypelist_getne
  • posix_trace_eventtypelist_rewin
  • posix_trace_flush()
  • posix_trace_get_attr()
  • posix_trace_get_filter()
  • posix_trace_get_status()
  • posix_trace_getnext_event()
  • posix_trace_open()
  • posix_trace_rewind()
  • posix_trace_set_filter()
  • posix_trace_shutdown()
  • posix_trace_timedgetnext_event(
  • posix_typed_mem_open()
  • 的printf()
  • pthread_rwlock_rdlock()
  • pthread_rwlock_timedrdlock()
  • pthread_rwlock_timedwrlock()
  • pthread_rwlock_wrlock()
  • putc将()
  • putc_unlocked()
  • 的putchar()
  • putchar_unlocked()
  • 看跌期权()
  • pututxline()
  • putwc()
  • putwchar()
  • READDIR()
  • readdir_r()
  • 去掉()
  • 改名()
  • 倒带()
  • rewinddir()
  • scanf()函数
  • seekdir()
  • 为semop()
  • setgrent()
  • sethostent()
  • setnetent()
  • setprotoent()
  • setpwent()
  • setservent()
  • setutxent()
  • STAT()
  • 字符串错误()
  • strerror_r()
  • 的strftime()
  • 符号链接()
  • 同步()
  • 系统日志()
  • TMPFILE()
  • 使用tmpnam()
  • TTYNAME()
  • ttyname_r()
  • tzset()
  • ungetc函数()
  • ungetwc()
  • 取消链接()
  • vfprintf()
  • vfwprintf()
  • vprintf()
  • vwprintf()
  • wcsftime()
  • wordexp()
  • wprintf()
  • wscanf()


实现不应将取消点引入本卷IEEE Std 1003.1-2001中规定的任何其他功能.

在函数调用期间暂停时对取消请求起作用的副作用与单个线程程序中当信号中断函数并且给定函数返回时可能出现的副作用相同[EINTR].任何此类副作用都会在调用任何取消清除处理程序之前发生.

每当一个线程启用了可取消性并且已经以该线程作为目标取消请求,然后该线程调用任何作为取消点的函数(例如pthread_testcancel()或read())时,取消请求应该被执行在函数返回之前.如果线程已启用可取消性并且在线程作为目标进行取消请求,而线程在取消点处被挂起,则线程应被唤醒并且应取消取消请求.但是,如果线程在取消点处被挂起并且它正在等待的事件发生在取消请求被执行之前,则未指定取消请求是否被执行或者取消请求是否保持未决并且线程恢复正常执行.

啊! 无法让桌子工作得很好它在预览中看起来没问题,之后没有像桌子那样.查看信息的URL!有很多可能的取消点.


Ami*_*deh 5

有关更多快速信息,请参见pthread_cancel手册页.