C++ Unix:通过名称和进程id以编程方式检查进程是否存在

C++ Unix:通过名称和进程id以编程方式检查进程是否存在,c++,unix,process,kill,C++,Unix,Process,Kill,我想定义一个名为: bool checkIfProcessExists(pid_t processId, const std::string &processName) { return 0 == kill(processId, 0); } 上述代码的不足之处在于它可能提供假阳性。(即processId实际上存在,但它与我感兴趣的流程不同,即“processName”) 如何更改代码,使其同时检查processId(第一个参数)和processName(第二个参数) 我宁愿避免使

我想定义一个名为:

bool checkIfProcessExists(pid_t processId, const std::string &processName)
{
   return 0 == kill(processId, 0);
}
上述代码的不足之处在于它可能提供假阳性。(即processId实际上存在,但它与我感兴趣的流程不同,即“processName”)

如何更改代码,使其同时检查processId(第一个参数)和processName(第二个参数)


我宁愿避免使用“grep”(或相关)的解决方案

假设您也无法访问
pgrep
,安全吗?gpojd,无法访问pgrep(但我认为这与任何方式都无关,因为我更愿意不使用任何“grep”类型的解决方案)(我现在更新了我原来的问题,以便更清楚)如果您有一个
/proc
文件系统,您可以通过它来验证流程。不过,详细信息取决于您使用的o/s。Linux功能强大,信息量大;Solaris更少,MacOSX没有它,等等,手动遍历;但是,当您拥有pid时,可以打开
/proc//comm
文件,其中包含用于运行程序的命令行。这是一个非常面向linux的解决方案