ExitProcess

ExitProcess 結束調用的進程及其所有的執行緒

windows函式,用於多執行緒編程

基本介紹

  • 外文名:ExitProcess
  • 平台:windows
  • 頭檔案:windows.h
  • 必要頭檔案:processthreadsapi.h
語法,參數,返回值,注意,使用條件,

語法

DECLSPEC_NORETURN VOID ExitProcess(  UINT uExitCode);

參數

uExitCode
該進程和所有執行緒的退出代碼。

返回值

此函式沒有返回值

注意

使用GetExitCodeProcess函式檢索進程的退出值。使用GetExitCodeThread函式檢索執行緒的退出值。
退出進程會導致以下情況:
  1. 除調用執行緒外,進程中的所有執行緒都會在不接收DLL_THREAD_DETACH通知的情況下終止執行。
  2. 在步驟1中終止的所有執行緒的狀態變為信號。
  3. 調用所有載入的動態程式庫(DLL)的入口點函式。
  4. 在所有附加的DLL都執行了任何進程終止代碼之後,ExitProcess函式終止當前進程,包括調用執行緒。
  5. 調用執行緒的狀態變為信號。
  6. 該進程打開的所有對象句柄都將關閉。
  7. 進程的終止狀態從STILL_ACTIVE更改為進程的退出值。
  8. 進程對象的狀態變為信號,滿足任何等待進程終止的執行緒。
如果進程中的一個終止執行緒持有鎖並且其中一個載入的DLL中的DLL分離代碼嘗試獲取相同的鎖,則調用ExitProcess會導致死鎖。 相反,如果進程通過調用TerminateProcess終止,則進程附加的DLL不會被通知進程終止。 因此,如果您不知道進程中所有執行緒的狀態,最好調用TerminateProcess而不是ExitProcess。 請注意,從應用程式的main函式返回會導致對ExitProcess的調用。
在DLL中調用ExitProcess可能會導致意外的應用程式或系統錯誤。 只有當您知道哪些應用程式或系統組件將載入DLL並且在此上下文中調用ExitProcess是安全的時,才確保從DLL調用ExitProcess
退出進程不會導致子進程終止。
退出進程不一定會從作業系統中刪除進程對象。 關閉進程的最後一個句柄時,將刪除進程對象。

使用條件

Windows 版本
WindowsXP
目標平台
Windows
頭檔案
processthreadsapi.h Windows.h
Kernel32.lib
DLL
Kernel32.dll

相關詞條

熱門詞條

聯絡我們