获取特定PID的状态
简单的问题,但我还没有找到答案.给定一个特定的PID,我可以确定该过程是否有效?我正在研究一个C程序,这让我疯狂.我在某处读到了kill(pid,0)可以解决这个问题,但无论进程是否正在运行(或者看起来如此),都会返回0.
任何提示? 附加信息: 更多信息: 看来我不是第一个遇到这个问题的人. 解决方法
您正在寻找
waitpid,它将返回给定PID的状态信息.
对于不相关的进程,您可以在linux中使用/ proc / [pid] / stat并读取输出. 关于更新的信息 IMO有两种情况. 第一: 子进程很快就完成了.使用waitpid(使用WNOHANG)并获取它的状态,然后你知道它是如何终止的并且它实际终止了. 第二: 子进程正在运行.将waitpid与WNOHANG一起使用并检查它是否仍在运行.如果没有做父母需要做的其他事情,经过足够的时间,孩子仍然跑,你可以杀死它,或做任何你的设计认为合适的反应. 无论哪种方式,waitpid正是您所需要的.伪代码只是证明,你可以在其间做其他事情,即使孩子提前终止你也不需要等待10秒,因为这样的轮询不合适. 伪代码: pid_t pid; pid = fork(); while(1) { if(pid == 0) { if(status = waitpid(pid,WNOHANG)) { if(status != exited) { if(checkExpiryTime() == true) kill(pid,SIGKILL); else sleep(x); // or whatever is appropriate in your case. } } } else { // do childstuff here. } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |