1

如何打印当前进程状态

main ()
{
  pid_t pid;
  printf("parent : %d\n", getpid());
  pid = fork();
  if (pid == 0)
    {
      printf("child : %d\n", getpid());
      sleep(2);
      printf("child exit\n");
      exit(1);
    }
  while (1)
    { /*after the child exit, its a zombie process */
      system("clear");
      system("ps -x | grep t"); /* if a.out is Z means zombie process */
      sleep(8);
    }
}

有没有其他方法或方式来查看输出本身的当前进程状态..?

4

2 回答 2

1

确定进程的调度状态是特定于操作系统的。在 Linux 上,top类似从/proc/$PID/stat.

于 2013-02-01T07:53:21.060 回答
1

您始终可以/proc在 C 中打开和读取文件

/proc/[pid]/stat/proc/[pid]/status会给出当前进程的状态。

中的第三个字段/proc/<pid>/stat包含进程状态:R表示正在运行,S表示正在睡眠(还有其他一些字段,例如D表示磁盘等待,Z表示 Zombie)。

或者您可以使用解析ps命令的输出popen。但请记住ps命令本身是根据/proc 文件系统中的信息实现的

于 2013-02-01T08:17:07.433 回答