Почему waitpid не ожидает завершения процесса?

У меня есть этот простой код, написанный на C, и моя ОС - osx:

int main() {
    pid_t pid = 1244;
    int pid_status;
    waitpid(pid, &pid_status, 0);
    printf("%i\n",pid_status);
}

1244 - это идентификатор процесса для браузера Opera, запущенного прямо сейчас:

Korays-MacBook-Pro:HelloWorld koraytugay$ ps -p 1244
  PID TTY           TIME CMD
 1244 ??         0:09.19 /Applications/Opera.app/Contents/MacOS/Opera

Я ожидаю, что при запуске этой программы она должна просто подождать, пока я закрою Opera, но я получаю следующее:

Korays-MacBook-Pro:HelloWorld koraytugay$ ./koko
1798668342
Korays-MacBook-Pro:HelloWorld koraytugay$ ./koko
1637806134
Korays-MacBook-Pro:HelloWorld koraytugay$ ./koko
1707163702

Почему эта программа напрямую выходит и что это за разные цифры?

1 ответ

Решение

waitpid эффективен только для дочерних процессов. См. Справочную страницу http://man7.org/linux/man-pages/man2/wait.2.html.

Ты найдешь waitpid возвращается -1. пожалуйста, проверьте errno

Другие вопросы по тегам