为什么 waitpid 不等待进程退出?
Why is waitpid not waiting for a process to quit?
我有这个用 C 编写的简单代码,我的 os 是 osx:
int main() {
pid_t pid = 1244;
int pid_status;
waitpid(pid, &pid_status, 0);
printf("%i\n",pid_status);
}
1244 是 Opera 浏览器 运行ning 当前的进程 ID:
Korays-MacBook-Pro:HelloWorld koraytugay$ ps -p 1244
PID TTY TIME CMD
1244 ?? 0:09.19 /Applications/Opera.app/Contents/MacOS/Opera
我希望发生的是当我 运行 这个程序时,它应该简单地等到我 close 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 编写的简单代码,我的 os 是 osx:
int main() {
pid_t pid = 1244;
int pid_status;
waitpid(pid, &pid_status, 0);
printf("%i\n",pid_status);
}
1244 是 Opera 浏览器 运行ning 当前的进程 ID:
Korays-MacBook-Pro:HelloWorld koraytugay$ ps -p 1244
PID TTY TIME CMD
1244 ?? 0:09.19 /Applications/Opera.app/Contents/MacOS/Opera
我希望发生的是当我 运行 这个程序时,它应该简单地等到我 close 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