__waitid_net()

Ожидать смены состояния дочернего процесса на удалённом узле

Прототип:

#include <sys/wait.h>
int __waitid_net( int nd,
idtype_t idtype,
id_t id,
siginfo_t *infop,
int options );

Аргументы:

nd
Дескриптор удалённого узла, с процессами которого будет производиться работа.
idtype
Какие дочерние процессы требуется ожидать:
P_PID
дочерний процесс с ID процесса (pid_t)id.
P_PGID
любой дочерний процесс с ID группы процессов равной (pid_t)id.
P_ALL
любой дочерний процесс, параметр id игнорируется.
id
В зависимости от значения idtype идентификатор процесса или группы процессов на удалённом узле, которые требуется ожидать.
infop
Указатель на структуру siginfo_t, определённую в <sys/siginfo.h>, в которой функция может сохранить текущее состояние дочернего процесса.
options
Комбинация следующих флагов, либо 0:
WCONTINUED
вернуть статус любого дочернего процесса, который был остановлен, а затем возобновлён.
WEXITED
ожидать завершения процесса(ов).
WNOHANG
немедленно возвратить управление, если ни один дочерний процесс не завершил выполнение.
WNOWAIT
оставить дочерний процесс в состоянии ожидания. Это не влияет на состояние процесса, ожидание процесса можно осуществить последующим вызовом функции.
WSTOPPED
дождаться остановки из-за полученного сигнала любого из дочерних прочерних процессов и вернуть его статус.
WUNTRACED
сообщить статус остановленного дочернего процесса, о статусе которого ещё не было сообщено.

Библиотека:

libc

Описание:

Функция __waitid_net() приостанавливает текущий поток до тех пор, пока один из дочерних процессов на удалённом узле nd не изменит своего состояния. Текущее состояние дочернего процесса сохранется в структуре по указателю infop. Если дочерний процесс изменил состояние до вызова __waitid_net(), функция вернёт управление немедленно.

Если __waitid_net() завершилась по причине нахождения дочернего процесса удовлетворяющего условиям заданным в аргументах idtype и options, то структура указанная в infop будет заполнена статусом процесса. Поле si_signo в структуре всегда равно SIGCHLD.


Note: Данная функция является расширением waitid() для работы с процессами на удалённых узлах. Вызов функции __waitid_net() с дескриптором узла, соответствующим локальному, аналогичен вызову waitid().

Возвращаемое значение:

0
Один из дочерних процессов изменил своё состояние. Если используется флаг WNOHANG, то 0 означает отсутствие ошибок; однако, если info->si_pid равен 0, то ни один из дочерних процессов не изменил своего состояния.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

ECHILD
Не найдено ожидаемых процессов во множестве заданном параметрами idtype и id.
EFAULT
Аргумент infop указывает на недопустимый адрес.
EINTR
Функция __waitid_net() прервана сигналом.
EINVAL
Недопустимое значение передано в параметре options, или idtype и id задают недопустимый набор процессов.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

siginfo_t, execl(), execle(), execlp(), execlpe(), execv(), execve(), execvp(), execvpe(), exit(), fork(), pause(), sigaction(), signal(), wait(), wait3(), wait4(), waitid(), waitpid()




Предыдущий раздел: Описание API системной библиотеки