Apa itu Pegangan Proses?

Jawaban:

25

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 .

crb
sumber
2

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).

Premraj
sumber
Jendela open()syscall sudah tidak digunakan lagi - docs.microsoft.com/en-gb/cpp/c-runtime-library/reference/open
yoniLavi