我真的搞砸了我的代码库,我正致力于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。由于工作量的原因,我可能会在某些小点上丢失。
任何领导都表示赞赏,提前谢谢。