wait () / waitpid () возвращает 1, а не pid child, как это исправить? - PullRequest

1 Ответ

13 голосов
/ 11 декабря 2010

Это классическое присвоение в условной ошибке - выражение оценивается следующим образом (поскольку сравнение имеет более высокий приоритет , чем присвоение):

if ( killedpid = ( wait( &status ) >= 0 )) { ...

killedpid получит значение TRUE, равное 1 в C. Чтобы обойти эту проблему, используйте круглые скобки и компилируйте с высокими уровнями предупреждений подобно -Wall -pedantic:

if (( killedpid = wait( ... )) >= 0 ) { ...
...