Чтобы узнать, работает ли wait(), будет ли правильным проверить его следующим образом? Теоретически, если wait() не терпит неудачу, следует вернуть родительскому процессу законченный дочерний pid, иначе родительский pid будет равен 1, правильно?Проверка ошибки wait()
switch (process = fork())
{
case -1:
// Fork fail
perror("Fork failed");
exit(EXIT_FAILURE);
case 0:
//Child process
HERE CODE DOES SOMETHING
exit(EXIT_SUCCESS);
default:
//Parent process
pid=wait(&status);
if(pid==1){
perror("Wait failed");
}else{
exit(EXIT_SUCCESS);
}
}
Чтение документации функцию, в основном помогает: http://man7.org/linux/man-pages/man2/waitpid.2 .html – alk
Кроме того, что 'wait' возвращает -1, а не 1 в случае ошибки, которая была покрыта существующими ответами, рассмотрите использование' waitpid', чтобы убедиться, что вы ожидаете процесс, который вы только раздвоили, а не первый дочерний процесс, который происходит с выходом (возможно, разветвлено раньше или другим потоком). Кроме того, рекомендуется использовать '_exit' вместо' exit', чтобы предотвратить непреднамеренное стирание буферов stdip родителя, унаследованных дочерним процессом. – user4815162342
@ пользователь4815162342 спасибо. – krm