如何查看程序输出本身的当前进程状态

时间:2013-02-01 06:57:19

标签: c bash unix sed grep

如何打印当前流程状态

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);
    }
}

是否有其他方法或方法可以查看输出中的当前进程状态 本身..?

2 个答案:

答案 0 :(得分:1)

确定进程的调度状态是特定于操作系统的。在Linux上,top及类似内容从/proc/$PID/stat中的第三个字段中读取。

答案 1 :(得分:1)

您始终可以在C

中打开和阅读/proc个文件

/proc/[pid]/stat/proc/[pid]/status会提供当前流程的状态。

/proc/<pid>/stat中的第三个字段包含进程状态: R 如果正在运行, S 如果它正在运行(还有其他几个,如 D 表示磁盘等待, Z 表示僵尸)。

或者您可以使用ps解析popen命令的输出。但请记住ps命令本身是根据 / proc filesystem

中的信息实现的