gpt4 book ai didi

c++ - linux-get C++ 中 PID 的任务状态

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:08 26 4
gpt4 key购买 nike

我有一个程序,我想获取任务的 PID 并返回其状态(正在运行、已停止等)及其退出状态(死亡、僵尸等)

我了解 C# 和 java,但对 linux 和 C++ 不太了解,这是我发现的...

#include<linux/kernel.h>
#include<linux/syscalls.h>
asmlinkage int sys_pidstat(int pid){

int status = 0;

int rtn = kill(pid, 0);
if (rtn == -1 && errno == ESRCH)
{
return 0;
}

rtn = waitpid(pid, &status, WNOHANG | WUNTRACED | WCONTINUED);

if (rtn == 0) // still live
{
return 0;
}

std::cout << "Probably success. Errno: " << errno << ". StrError: " << strerror(errno) << std::endl;
if (WIFEXITED(status))
{
return 1;
}

return 0;
;
}

我发现waitpid可能会返回状态..但无法实现它..waitpid需要一个pid作为输入...我应该给出什么作为pid?如果有人帮助我并给我一些如何做的提示,那就太好了?非常感谢

最佳答案

waitpid() 等待子进程终止。它与某个与该进程没有任何关系的任意进程的状态无关。

Linux 的特点是它不是神秘的黑匣子,其工作原理是一个深藏的 secret 。如果有人想知道如何在 Linux 上做某事,他们所要做的就是查看源代码。

我确信您知道如何使用 ps 命令,它正是您想要做的事情。

您可以查看https://gitlab.com/procps-ng/procps上的ps命令的源代码看看 ps 如何做到这一点,然后自己做同样的事情。

关于c++ - linux-get C++ 中 PID 的任务状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35102734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com