Добавьте эти #include
s:
#include <sys/types.h>
#include <sys/wait.h>
, затем вызвать wait(2)
правильно:
int status;
wait(&status);
Ваш код, wait()
, не вызывает системный вызов wait(2)
. Скорее, он объявляет временный объект типа union wait
. Если вы #include
stdlib.h
, но не sys/wait.h
, то вы получите только объявление типа, а не объявление функции.
Кстати, если бы вы проверили возвращаемое значение вызова wait
: int result = wait()
, вы бы получили информационное сообщение об ошибке:
xsh.cc: 26: ошибка: невозможно преобразовать «wait» в «int» при инициализации