c - 为什么 waitpid 不等待进程退出?

标签 c macos process pid

我用 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/

相关文章:

c - memmem 在 mac 上可用吗?

c - 如何获取结构体内部结构体成员的指针

macos - 使用swift语言osx自动关闭窗口

macos - 计算 OS X 中的磁盘速度

linux - 为什么会存在僵尸进程?

c - 我不明白这一步,特别是在合并排序中

Excel 中单元格的坐标

macos - dyld:DYLD_ 环境变量被忽略,因为主可执行文件 (/usr/bin/sudo) 是 setuid 或 setgid

C#多次启动进程

c - 是否有任何开源跨平台库可以使用 C 语言处理进程?