C++ linux获取C+中PID的任务状态+;

C++ linux获取C+中PID的任务状态+;,c++,linux,C++,Linux,我有一个程序,我想得到一个任务的PID,并返回其状态(运行、停止和…)和退出状态(死亡、僵尸和…) 我知道C和java,但不太了解Linux和C++,这就是我发现的……/P> #include<linux/kernel.h> #include<linux/syscalls.h> asmlinkage int sys_pidstat(int pid){ int status = 0; int rtn = kill(pid, 0); i

我有一个程序,我想得到一个任务的PID,并返回其状态(运行、停止和…)和退出状态(死亡、僵尸和…)

<>我知道C和java,但不太了解Linux和C++,这就是我发现的……/P>
#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;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ;
}
#包括
#包括
ASM联动装置内部系统pidstat(内部pid){
int status=0;
int rtn=压井(pid,0);
如果(rtn=-1&&errno==ESRCH)
{
返回0;
}
rtn=等待pid(pid和状态,WNOHANG | WUNTRACED | WCONTINUED);
如果(rtn==0)//仍然有效
{
返回0;
}
std::cout
waitpid()
等待子进程终止。它与某个与此进程无关的任意进程的状态无关

Linux的问题在于它不是一个神秘的黑匣子,它的工作原理是一个根深蒂固的秘密。如果有人想知道如何在Linux上做一些事情,他们所要做的就是查看源代码

我相信您知道如何使用
ps
命令,这正是您想要做的


您可以查看上的
ps
命令的源代码,看看
ps
是如何做到这一点的,然后自己做同样的事情。

阅读手册页。如果您不理解其中所写的内容,请询问。谢谢您的提示。我查看了ps命令,似乎这正是我的意思。我应该尝试学习如何使用它们。谢谢s