我用C编写了这个简单的代码,我的操作系统是osx:

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

1244是Opera浏览器当前运行的进程id:
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

为什么这个项目会直接退出?这些不同的数字是多少?

最佳答案

waitpid仅对子进程有效参见手册页
http://man7.org/linux/man-pages/man2/wait.2.html
你会发现waitpid正在返回-1请检查errno

关于c - 为什么waitpid不等待进程退出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29545563/

10-13 04:02