LINUX.ORG.RU

wiatpid & SIGCHLD


0

0

Hi all!

Не понимаю вот такую вещь. В man waitpid сказано:

ERRORS: ECHILD - if the process specified in pid does not exist or is not a child of the calling process. (This can happen for one's own child if the action for SIGCHLD is set to SIG_IGN...)

С другой стороный, умолчательное действие SIGCHLD, как явствует из man 7 signal:

... SIGCHLD 20,17,18 Ign Child stopped or terminated ...

- игнорировать сигнал.

Из "Правил игры в сигналы UNIX", правило 1, с.3, (http://groups.google.ru/group/fido7.ru.unix.prog/msg/5c851b9f03715729?q=g:thl89 75867d&dq=&hl=ru&lr=&rnum=36) следует, что действие по умолчанию для SIGCHLD совпадает с SIG_IGN.

Следовательно, если не переопределять действие SIGCHLD, waitpid будет завершаться с ошибкой ECHILD! Но если я не хочу устанавливать свой обработчик, то как же мне быть? И вообще, в любых руководствах по программированию в униксах, когда речь заходит о wait/waitpid, в пример приводятся простые программки, в которых процесс форкается и parent спокойно делает waitpid на чайлда без всяких дополнительных обработчиков.

Подскажите, где я неправ, что курить?

anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.