Как узнать, если мы получаем ошибку или идентификатор группы, используя fcntl и F_GETOWN? - PullRequest
0 голосов
/ 25 ноября 2018

Вот синтаксис использования fcntl для манипулирования дескрипторами файлов:

val = fcntl(fd, F_GETOWN, 0)

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

А также упоминается, что значение -1 означает, что произошла ошибка.

Как определить, была ли у функции ошибка или возвращено отрицательное значение идентификатора группы?

1 Ответ

0 голосов
/ 25 ноября 2018

-1 - ошибка.Другими отрицательными значениями являются идентификаторы группы процессов.Процитируем спецификацию Single UNIX для этой функции (выделение мое):

F_GETOWN

Если fildes относится к сокетуполучить идентификатор процесса или идентификатор группы процессов, указанные для приема сигналов SIGURG, когда доступны внеполосные данные.Положительные значения должны указывать идентификатор процесса;отрицательные значения , отличные от -1 , должны указывать идентификатор группы процессов;нулевое значение должно указывать на то, что сигналы SIGURG не должны отправляться.Если fildes не ссылается на сокет, результаты не указываются.

Имейте в виду, что идентификатор группы процессов -1 в любом случае не имеет особого смысла.Это будет означать, что pid 1 (то есть init) является лидером группы процессов.Это невозможно в любой нормальной системе и может привести к нежелательным последствиям.

...