Apa itu handle proses dan apa yang bisa kita ketahui tentang proses yang berjalan melalui properti "handle count" di task explorer?
Apa itu handle proses dan apa yang bisa kita ketahui tentang proses yang berjalan melalui properti "handle count" di task explorer?
Pegangan proses adalah nilai integer yang mengidentifikasi proses ke Windows. API Win32 menyebut mereka HANDLE; Pegangan ke jendela disebut HWND dan pegangan ke modul HMODULE.
Utas di dalam proses memiliki ulir pegangan, dan file serta sumber daya lainnya (seperti kunci registri) juga memiliki pegangan.
Jumlah gagang yang Anda lihat di Pengelola Tugas adalah " jumlah pegangan objek di tabel objek proses ". Akibatnya, ini adalah jumlah semua pegangan yang proses ini telah buka.
Jika Anda tidak melepaskan pegangan ke sumber daya, orang lain mungkin tidak dapat mengaksesnya - inilah sebabnya Anda terkadang tidak dapat menghapus file karena Windows mengklaim sedang digunakan (lihat artikel ini tentang kebocoran pegangan dan Process Explorer ).
Juga, ada batas per proses pada berbagai pegangan. Berikut ini sebuah contoh .
Secara umum, jika Anda membuka pegangan dan tidak menutupnya, itu analog dengan kebocoran memori. Anda harus mencari tahu apa yang sedang terjadi dan memperbaikinya. Ada artikel CodeProject yang bagus tentang kebocoran pegangan .
Menangani adalah nilai integer yang digunakan untuk mengatasi suatu objek. Sebagai contoh:
int handle = open( "foo.txt", OTHER_STUFF_HERE );
open()
adalah System Call mengembalikan gagang, integer kecil, non-negatif untuk digunakan dalam panggilan sistem berikutnya (baca (2), tulis (2), lseek (2), fcntl (2), dll.).
Pegangan Windows sangat mirip dengan Unix file descriptors (FDs).
open()
syscall sudah tidak digunakan lagi - docs.microsoft.com/en-gb/cpp/c-runtime-library/reference/open