如何打印当前流程状态
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);
}
}
是否有其他方法或方法可以查看输出中的当前进程状态 本身..?
答案 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