什么是POSIX取消点?我正在寻找一个确定的POSIX取消点列表。
我之所以问这个问题,是因为我有一本书说
此外,如果Linux取消点与POSIX取消点不同,我也想要它们的列表。
我之所以问这个问题,是因为我有一本书说
accept()
和select()
是取消点,但我在互联网上看到的一些网站声称它们不是取消点。此外,如果Linux取消点与POSIX取消点不同,我也想要它们的列表。
accept()
和select()
是取消点,但我在互联网上看到的一些网站声称它们不是取消点。POSIX 1003.1-2003标准在系统接口部分、一般信息部分和线程部分(由A. Rex提供的直接链接)中给出了列表。 (添加:POSIX 1003.1-2008现在可以在网上获取(PDF和HTML共3872页)。您需要注册(免费)。我从Open Group Bookstore获得了该标准。)
- access()
- 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()
- fgetc()
- 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()
- gets()
- getservbyname()
- getservbyport()
- getservent()
- getutxent()
- getutxid()
- getutxline()
- getwc()
- getwchar()
- getwd()
- glob()
- iconv_close()
- iconv_open()
- ioctl()
- link()
- localtime()
- 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
实现不得在本卷中指定的任何其他函数中引入取消点。在调用函数期间挂起并处理取消请求的副作用与单线程程序中通过信号中断调用函数并返回[EINTR]时可能看到的副作用相同。任何这样的副作用都发生在调用任何取消清理处理程序之前。只要线程启用了可取消性并且已使用该线程作为目标进行了取消请求,那么当线程调用任何是取消点(例如pthread_testcancel()或read())的函数时,取消请求将在函数返回之前被执行。如果一个线程启用了可取消性并且取消请求是针对该线程而发出的,同时线程在取消点处挂起,则线程将被唤醒并执行取消请求。但是,如果线程在取消点上挂起并且正在等待的事件在取消请求被执行之前发生,则未指定是否执行取消请求或取消请求保持挂起状态,线程恢复正常执行。URL中有关于大量可能的取消点的信息。
额外信息:自内核2.6以来,Linux使用符合POSIX标准的NPTL线程库,因此最近的Linux实现应该与上述取消点一样。