簡體   English   中英

沒有新進程,在 CreateProcess 成功啟動后

[英]No new process, after succeede launch of CreateProcess

我正在嘗試創建將監視另一個進程的執行的程序。 如果進程崩潰,我的程序將重新啟動它。 (有點過程監視器)。 我有稱為 ProcessController 的主要 class。 有應該啟動新進程的 ProcessController::Start() 方法。 有代碼:

ProcessController::Start()
{

        if (!CreateProcess(
            m_progPath.c_str(),           //Program name
            NULL,        // Command line
            NULL,           // Process handle not inheritable
            NULL,           // Thread handle not inheritable
            FALSE,          // Set handle inheritance to FALSE
            0,              // No creation flags
            NULL,           // Use parent's environment block
            NULL,           // Use parent's starting directory 
            &m_si,            // Pointer to STARTUPINFO structure
            &m_pi)           // Pointer to PROCESS_INFORMATION structure
            )
        {
            printf("CreateProcess failed (%d).\n", GetLastError());
            return false;
        }

        ... other code

}

我從來沒有看到錯誤代碼,所以 CreateProcess 執行得很好,但是,沒有新進程出現(在任務管理器中看不到新進程,也沒有出現 windows。我嘗試啟動的應用程序也寫入日志,但在我之后沒有新日志運行我的 ProcessController。)我嘗試啟動的進程的權限設置為啟用執行它。 如果我嘗試使用我的代碼創建記事本++ 進程,它工作正常。 notepad++ window 出現。 我總是使用我試圖從我的 controller 開始的程序的完整路徑。

難道我做錯了什么??

推斷是要加載的組件有問題。 如上所述,如果找不到所需的 DLL 或無法初始化,則終止該過程。 此外,如果線程是進程中唯一的活動線程,則終止進程。 加載組件失敗可能會導致進程中只有活動線程。 以下是參考文檔: https://learn.microsoft.com/en-us/windows/win32/procthread/terminating-a-thread您可以使用 cmd 或其他任何東西來運行您編譯的 exe。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM