Boost Library查找父进程ID

时间:2016-11-24 07:34:05

标签: c++ linux windows boost process

我真的搞砸了我的代码库,我正致力于C ++代码的可移植性。

截至目前,代码似乎是特定于Windows的,并且它尝试获取正在执行的父进程ID。例如:我在C ++中编写一个代码,该代码使用执行由其(代码)编译创建的相应EXE的cmd的Parent的进程ID。

DWORD getParentPID()
{
  HANDLE hSnapshot;
  PROCESSENTRY32 pe32;
  DWORD parentPID = 0, PID = GetCurrentProcessId();
  hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
  __try{
      if( hSnapshot == INVALID_HANDLE_VALUE ) __leave;
      ZeroMemory( &pe32, sizeof( pe32 ) );
      pe32.dwSize = sizeof( pe32 );
      if( !Process32First( hSnapshot, &pe32 ) ) __leave;
      do{
        if( pe32.th32ProcessID == PID ){
            parentPID = pe32.th32ParentProcessID;
            break;
         }
      }while( Process32Next( hSnapshot, &pe32 ) );
   }
   __finally{
     if( hSnapshot != INVALID_HANDLE_VALUE ) CloseHandle( hSnapshot );
   }
  return parentPID;
}

显然,这段代码不适用于Linux,我不想进行任何预编译。期待使用Boost C ++的一些独立于平台的代码。

PS:接受最高som范围的预编译。主要是目标平台是Windows和Linux。由于工作量的原因,我可能会在某些小点上丢失。

任何领导都表示赞赏,提前谢谢。

0 个答案:

没有答案