Каковы пункты отмены POSIX? Я ищу исчерпывающий список пунктов отмены POSIX.
Я спрашиваю, потому что у меня есть книга, в которой говорится, что accept() и select() являются пунктами отмены, но я видел сайты в Интернете, которые утверждали, что это не так.
Кроме того, если точки отмены Linux отличаются от точек отмены POSIX, мне тоже нужен их список.





Стандарт POSIX 1003.1-2003 дает список в разделе «Системные интерфейсы», затем в разделе «Общая информация» и затем «Потоки» (Прямая ссылка любезно предоставлен A. Rex). (Добавлен: POSIX 1003.1-2008 теперь доступен в сети (все 3872 страницы в PDF и HTML). Вы должны зарегистрироваться (бесплатно). Я получил его из Книжный магазин Open Group.)
Cancellation points shall occur when a thread is executing the following functions:
- accept()
- aio_suspend()
- clock_nanosleep()
- close()
- connect()
- creat()
- fcntl() (When the cmd argument is F_SETLKW)
- fdatasync()
- fsync()
- getmsg()
- getpmsg()
- lockf()
- mq_receive()
- mq_send()
- mq_timedreceive()
- mq_timedsend()
- msgrcv()
- msgsnd()
- msync()
- nanosleep()
- open()
- pause()
- poll()
- pread()
- pselect()
- pthread_cond_timedwait()
- pthread_cond_wait()
- pthread_join()
- pthread_testcancel()
- putmsg()
- putpmsg()
- pwrite()
- read()
- readv()
- recv()
- recvfrom()
- recvmsg()
- select()
- sem_timedwait()
- sem_wait()
- send()
- sendmsg()
- sendto()
- sigpause()
- sigsuspend()
- sigtimedwait()
- sigwait()
- sigwaitinfo()
- sleep()
- system()
- tcdrain()
- usleep()
- wait()
- waidid()
- waitpid()
- write()
- writev()
A cancellation point may also occur when a thread is executing the following functions:
- 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() (For any value of the cmd argument. [Presumably except F_SETLKW which is listed.]
- 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() (if opterr is non-zero.)
- 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
- 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()
- puts()
- pututxline()
- putwc()
- putwchar()
- readdir()
- readdir_r()
- remove()
- rename()
- rewind()
- rewinddir()
- scanf()
- seekdir()
- semop()
- setgrent()
- sethostent()
- setnetent()
- setprotoent()
- setpwent()
- setservent()
- setutxent()
- stat()
- strerror()
- strerror_r()
- strftime()
- symlink()
- sync()
- syslog()
- tmpfile()
- tmpnam()
- ttyname()
- ttyname_r()
- tzset()
- ungetc()
- ungetwc()
- unlink()
- vfprintf()
- vfwprintf()
- vprintf()
- vwprintf()
- wcsftime()
- wordexp()
- wprintf()
- wscanf()
An implementation shall not introduce cancellation points into any other functions specified in this volume of IEEE Std 1003.1-2001.
The side effects of acting upon a cancellation request while suspended during a call of a function are the same as the side effects that may be seen in a single-threaded program when a call to a function is interrupted by a signal and the given function returns [EINTR]. Any such side effects occur before any cancellation cleanup handlers are called.
Whenever a thread has cancelability enabled and a cancellation request has been made with that thread as the target, and the thread then calls any function that is a cancellation point (such as pthread_testcancel() or read()), the cancellation request shall be acted upon before the function returns. If a thread has cancelability enabled and a cancellation request is made with the thread as a target while the thread is suspended at a cancellation point, the thread shall be awakened and the cancellation request shall be acted upon. However, if the thread is suspended at a cancellation point and the event for which it is waiting occurs before the cancellation request is acted upon, it is unspecified whether the cancellation request is acted upon or whether the cancellation request remains pending and the thread resumes normal execution.
Фу! Невозможно заставить таблицу работать очень хорошо, она выглядела нормально в предварительном просмотре, и после нее не было ничего похожего на таблицу. Посмотрите URL-адрес для информации! Возможных пунктов отмены очень много.
(Я посмотрел на источник страницы - это лучший способ? Единственный способ?)
Да, это то, что я сделал. (Ну, сначала я вышел из их надоедливого набора фреймов, щелкнув правой кнопкой мыши «Открыть фрейм в новой вкладке». Таким образом, я быстро получаю имя файла HTML.) Вы знаете, я достаточно часто использую глубокие ссылки, так что было бы полезно иметь расширение браузера, которое показывает мне все возможные точки ссылок ...
В качестве альтернативы мы могли бы перейти к тематическому индексу opengroup.org/onlinepubs/000095399/idx/topic.html, и он находится на расстоянии одного клика!
Дополнительная информация: начиная с ядра 2.6, Linux использует библиотеку потоков NPTL, совместимую с POSIX, поэтому точки отмены должны быть такими же, как указано выше для недавних внедрений Linux.
См. pthread_cancel справочная страница для получения дополнительной и быстрой информации.
Вот глубокая ссылка на правый раздел: opengroup.org/onlinepubs/000095399/functions/…