Win32進程如何獲得其父進程的pid?我正在將命令行上的pid傳遞給子進程,但有沒有辦法在Win32 API中執行此操作?或者,如果父母已經去世,有人可以減輕我的擔心,即我經過的pid可能會在一段時間后屬于另一個過程嗎?
3 回答

慕慕森
TA貢獻1856條經驗 獲得超17個贊
請注意,如果父進程終止,則很可能甚至可能將PID重用于另一個進程。這是標準的Windows操作。
所以可以肯定的是,一旦你收到父母的id,并確定它真的是你的父母,你應該打開它的句柄并使用它。

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
為了防止其他人遇到這個問題并且正在尋找代碼示例,我最近必須為我正在研究的Python庫項目執行此操作。這是我提出的測試/示例代碼:
#include <stdio.h>#include <windows.h>#include <tlhelp32.h>int main(int argc, char *argv[]) { int pid = -1; HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 pe = { 0 }; pe.dwSize = sizeof(PROCESSENTRY32); //assume first arg is the PID to get the PPID for, or use own PID if (argc > 1) { pid = atoi(argv[1]); } else { pid = GetCurrentProcessId(); } if( Process32First(h, &pe)) { do { if (pe.th32ProcessID == pid) { printf("PID: %i; PPID: %i\n", pid, pe.th32ParentProcessID); } } while( Process32Next(h, &pe)); } CloseHandle(h);}
添加回答
舉報
0/150
提交
取消