Ожидать смены состояния дочернего процесса на удалённом узле
#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
.
 | Данная функция является расширением 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 системной библиотеки