【问题标题】:How can I get status processes in a C project? [duplicate]如何在 C 项目中获取状态进程? [复制]
【发布时间】:2020-12-06 19:33:30
【问题描述】:

对于我的 C 项目,我需要知道各种进程处于哪种状态(运行、等待、终止……)。这些进程是我自己使用许多 fork() 创建的。有谁知道如何做到这一点?

示例: 我有一个 PPID = x 的进程 我做了 3 fork() -> 我得到了 PID = x+1、PID = x+2 和 PID = x+3(或多或少)的三个新进程。 我需要知道 PID = x+1、PID = x+2 和 PID = x+3 的进程是否正在运行、等待或终止。

【问题讨论】:

  • “等待”是什么意思?您的意思是由于 SIGSTOP 导致的等待,还是在 IO 上被阻塞,或者可运行但等待时间片,或者其他什么?
  • 所以你想要waitpid

标签: c process fork status getstate


【解决方案1】:

如果您执行 3 个fork(),则您有超过 3 个新进程。你有 2^n 个进程。 n 是您拨打fork()的次数

例如

#include <stdio.h> 
#include <sys/types.h> 
int main() 
{ 
    fork(); 
    fork(); 
    fork(); 
    printf("hello\n"); 
    return 0; 
}

打印这个

hello
hello
hello
hello
hello
hello
hello
hello

我也相信你的问题已经回答here

【讨论】:

  • 如果他只在父进程中再次调用fork() 他不会得到2^n。由于他没有发布实际代码,我认为现在做出假设还为时过早。此外,它与问题并不真正相关。
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多