Подтвердить что ты не робот

Пункты отмены POSIX

Может ли кто-нибудь указать мне на окончательный список пунктов отмены POSIX?

Я как раз собирался ответить на вопрос о stackoverflow и понял, что недостаточно хорошо разбираюсь в своих вещах! В частности, принимаются() и выбирают() точки отмены? У меня есть старая книга, в которой говорится нет, но я видел, что сайты в Интернете утверждают, что они есть. Confused!

Я также получаю список пунктов отмены Linux, если они отличаются.

4b9b3361

Ответ 1

Стандарт POSIX 1003.1-2003 предоставляет список в разделе "Системные интерфейсы", затем "Общая информация", затем "Темы" (прямая ссылка, предоставленная A. Rex). (Добавлено: POSIX 1003.1-2008 теперь доступен в Интернете (все его 3872 страницы в PDF и HTML). Вам необходимо зарегистрироваться ( бесплатно). Я получил это от Open Group Bookstore.)

Точки отмены

Точки отмены должны произойти, когда поток выполняет следующие функции:

  • принимает()
  • aio_suspend()
  • clock_nanosleep()
  • близко()
  • подключения()
  • Creat()
  • 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()
  • SendTo()
  • 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()
  • fgetc()
  • fgetpos()
  • fgets()
  • fgetwc()
  • fgetws()
  • fmtmsg()
  • Еореп()
  • fpathconf()
  • fprintf()
  • fputc()
  • fputs()
  • fputwc()
  • fputws()
  • Fread()
  • freopen()
  • fscanf()
  • FSEEK()
  • fseeko()
  • fsetpos()
  • fstat()
  • ftell()
  • ftello()
  • FTW()
  • fwprintf()
  • FWRITE()
  • fwscanf()
  • getaddrinfo()
  • ЕОКП()
  • 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()
  • localtime_r()
  • lseek()
  • lstat()
  • mkstemp()
  • указываете ей()
  • 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()
  • Е()
  • 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()
  • зсапЕ()
  • seekdir()
  • semop()
  • setgrent()
  • sethostent()
  • setnetent()
  • setprotoent()
  • setpwent()
  • setservent()
  • setutxent()
  • стат()
  • strerror()
  • strerror_r()
  • STRFTIME()
  • символическая()
  • синхронизация()
  • системный журнал()
  • tmpfile()
  • tmpnam()
  • ttyname()
  • ttyname_r()
  • tzset()
  • ungetc()
  • ungetwc()
  • Unlink()
  • vfprintf()
  • vfwprintf()
  • vprintf()
  • vwprintf()
  • wcsftime()
  • wordexp()
  • wprintf()
  • wscanf()


Реализация не должна вводить точки отмены в любые другие функции, указанные в этом томе IEEE Std 1003.1-2001.

Побочные эффекты воздействия на запрос отмены при приостановке во время вызова функции совпадают с побочными эффектами, которые могут наблюдаться в однопоточной программе, когда вызов функции прерывается сигналом, а данная функция возвращает [EINTR]. Любые такие побочные эффекты возникают до тех пор, пока не будут вызваны обработчики очистки отмены.

Всякий раз, когда поток имеет отмену включен и запрос на отмену был сделан с этим потоком в качестве цели, а затем поток вызывает любую функцию, которая является точкой отмены (например, pthread_testcancel() или read()), запрос отмены должны действовать до возвращения функции. Если поток имеет возможность отмены, и запрос на отмену выполняется с потоком в качестве цели, в то время как поток приостанавливается в точке отмены, поток должен быть разбужен, и на запрос аннулирования будет действовать. Однако, если поток приостанавливается в точке отмены, и событие, для которого оно ожидает, происходит до того, как будет применен запрос аннулирования, не указано, будет ли выполняться запрос на отмену или будет ли ожидаться запрос отмены, и поток возобновится выполнение.

Тьфу! Невозможно заставить стол работать очень хорошо, он выглядел нормально в предварительном просмотре и ничего подобного таблице впоследствии. Посмотрите URL-адрес информации! Существует много возможных пунктов отмены.

Ответ 3

Дополнительная информация: с ядра 2.6 Linux использовал библиотеку потоков NPTL, совместимую с POSIX, поэтому точки отмены должны быть такими, как указано выше, для последних внедрений Linux.

http://www.ddj.com/linux-open-source/184406204