Dalam man ps
, itu jelas menyatakan berbagai kondisi proses di Linux.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by its parent.
Bahkan jika X
ini adalah keadaan proses, itu tidak boleh dilihat. Tetapi apakah itu benar? Apakah ada cara teoretis untuk melihatnya sebagai keadaan pada suatu proses? Atau benar-benar 100% mustahil?
linux
linux-kernel
history
xeor
sumber
sumber
Jawaban:
Saya mengambil sedikit menyelam ke kernel Linux, tanpa pengetahuan tentang cara kerjanya di inti dalamnya, atau pengetahuan C besar. Jadi tolong baik-baik saja dengan teori ini :)
The
DEAD
state didefinisikan https://github.com/torvalds/linux/blob/master/fs/proc/array.c#L141 dan digunakan di https://github.com/torvalds/linux/blob/master/fs /exec.c#L974 untuk memberikan status pengembalian saja. Jadi satu-satunya cara yang bisa dilihat adalah jika Anda memeriksa keadaan proses sebelum sekitar https://github.com/torvalds/linux/blob/master/fs/exec.c#L986 (atau nanti di mana pun fungsi ini dipanggil) dari..).Jika Anda mencoba untuk mematikan proses yang mati itu akan diurus dan diabaikan di https://github.com/torvalds/linux/blob/master/kernel/signal.c#L1363
Jadi secara teori ... saya pikir jawabannya adalah ya. X sebagai keadaan dapat dilihat dalam teori, tetapi mungkin belum pernah dalam kehidupan nyata ..
Harap perbaiki saya jika / di mana saya salah .. Saya tidak yakin tentang ini sama sekali ..
sumber
until sleep 0.4 & perl -e '$p = shift; while (1) {open A, "</proc/$p/stat" or last; $_=<A>; print}' $! | grep X; do :; done
4603 (sleep) X 0 -1 -1 0 -1 4202508 0 0 0 0 0 0 0 0 20 0 0 0 175042279 0 0 0 0 0 0 0 0 0 0 0 0 18446744071579306375 0 0 17 0 0 0 0 0 0
.. Pertanyaan dijawab. X itu mungkin! Terima kasih!Berikut bukti yang baru saja kita temui di sistem live:
sumber
ps
?