Почему 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