Bagikan melalui


Fungsi ExitProcess (processthreadsapi.h)

Mengakhiri proses panggilan dan semua utasnya.

Sintaks

void ExitProcess(
  [in] UINT uExitCode
);

Parameter

[in] uExitCode

Kode keluar untuk proses dan semua utas.

Nilai kembali

Tidak ada

Keterangan

Gunakan fungsi GetExitCodeProcess untuk mengambil nilai keluar proses. Gunakan fungsi GetExitCodeThread untuk mengambil nilai keluar utas.

Keluar dari proses menyebabkan hal berikut:

  1. Semua utas dalam proses, kecuali utas panggilan, hentikan eksekusinya tanpa menerima pemberitahuan DLL_THREAD_DETACH.
  2. Status semua utas yang dihentikan di langkah 1 menjadi sinyal.
  3. Fungsi titik entri dari semua pustaka tautan dinamis (DLL) yang dimuat dipanggil dengan DLL_PROCESS_DETACH.
  4. Setelah semua DLL terlampir menjalankan kode penghentian proses apa pun, fungsi ExitProcess mengakhiri proses saat ini, termasuk utas panggilan.
  5. Status utas panggilan menjadi sinyal.
  6. Semua handel objek yang dibuka oleh proses ditutup.
  7. Status penghentian proses berubah dari STILL_ACTIVE ke nilai keluar dari proses.
  8. Status objek proses menjadi sinyal, memenuhi utas apa pun yang telah menunggu proses dihentikan.
Jika salah satu utas yang dihentikan dalam proses memegang kunci dan kode pencopotan DLL di salah satu DLL yang dimuat mencoba memperoleh kunci yang sama, maka memanggil ExitProcess mengakibatkan kebuntuan. Sebaliknya, jika proses berakhir dengan memanggil TerminateProcess, DLL tempat proses dilampirkan tidak diberi tahu tentang penghentian proses. Oleh karena itu, jika Anda tidak tahu status semua utas dalam proses Anda, lebih baik memanggil TerminateProcess daripada ExitProcess. Perhatikan bahwa mengembalikan dari fungsi utama aplikasi menghasilkan panggilan ke ExitProcess.

Memanggil ExitProcess di DLL dapat menyebabkan kesalahan aplikasi atau sistem yang tidak terduga. Pastikan untuk memanggil ExitProcess dari DLL hanya jika Anda tahu aplikasi atau komponen sistem mana yang akan memuat DLL dan aman untuk memanggil ExitProcess dalam konteks ini.

Keluar dari proses tidak menyebabkan proses anak dihentikan.

Keluar dari proses tidak selalu menghapus objek proses dari sistem operasi. Objek proses dihapus ketika handel terakhir ke proses ditutup.

Contoh

Misalnya, lihat Membuat Proses Anak dengan Input dan Output yang Dialihkan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header processthreadsapi.h (termasuk Windows.h pada Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

CreateProcess

CreateRemoteThread

CreateThread

ExitThread

GetExitCodeProcess

GetExitCodeThread

OpenProcess

Fungsi Proses dan Utas

Proses

TerminateProcess

Mengakhiri Proses