【问题标题】:how to view current process state in program output itself如何在程序输出本身中查看当前进程状态
【发布时间】:2013-02-01 06:57:19
【问题描述】:

如何打印当前进程状态

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

有没有其他方法或方式可以在输出中查看当前进程状态 本身..?

【问题讨论】:

  • 您对哪些状态信息感兴趣?是跑步还是睡觉还是僵尸?

标签: c bash unix sed grep


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多