Стандарт не упоминает O_NONBLOCK
в качестве допустимого флага для posix_openpt()
, и FreeBSD (где posix_openpt()
- это действительный системный вызов, а не просто оболочка для open("/dev/ptmx")
) будет ошибка, если этот флаг используется.
Тем не менее, установка возвращенного файла в неблокирующем режиме с помощью fcntl(F_SETFL, O_NONBLOCK)
впоследствии, кажется, работает нормально.
Есть ли что-то более глубокое за этим (то есть возможно, что мастер псевдотерминала не может быть установлен в неблокирующий режим), или это просто пример паршивой спецификации?