亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Win32進程如何獲得其父進程的pid?

Win32進程如何獲得其父進程的pid?

MYYA 2019-08-13 16:25:04
Win32進程如何獲得其父進程的pid?我正在將命令行上的pid傳遞給子進程,但有沒有辦法在Win32 API中執行此操作?或者,如果父母已經去世,有人可以減輕我的擔心,即我經過的pid可能會在一段時間后屬于另一個過程嗎?
查看完整描述

3 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

請注意,如果父進程終止,則很可能甚至可能將PID重用于另一個進程。這是標準的Windows操作。

所以可以肯定的是,一旦你收到父母的id,并確定它真的是你的父母,你應該打開它的句柄并使用它。


查看完整回答
反對 回復 2019-08-13
?
撒科打諢

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);}


查看完整回答
反對 回復 2019-08-13
?
UYOU

TA貢獻1878條經驗 獲得超4個贊

更好的方法是調用DuplicateHandle()創建進程句柄的可繼承副本。然后創建子進程并在命令行上傳遞句柄值。 Close父進程中的重復句柄。當孩子完成后,它也需要Close復制。


查看完整回答
反對 回復 2019-08-13
  • 3 回答
  • 0 關注
  • 894 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號