Linux
執行“沒有 exec 的 vfork”的程序如何以長時間不間斷的睡眠結束?
在這個答案中,使用者建議
通常,不間斷的睡眠不應該持續很長時間,但在 Windows 下,損壞的驅動程序或損壞的使用者空間程序(沒有 exec 的 vfork)最終可能會永遠在 D 中休眠。
使用者空間程序如何在非錯誤核心上真正鎖定在 D 中?我認為使用者模式能夠故意卡在 D 中是一個小漏洞……
當程序呼叫
vfork
時,只要子程序沒有執行_exit
orexecve
(僅有的兩個授權函式,以及execve
的親屬execvp
,等等) ,父程序就會保持狀態 D。父程序仍在執行vfork
呼叫,所以它處於狀態 D。如果孩子做了這樣的事情(這很愚蠢,但有效),父母將無限期地保持在狀態 D,而孩子將無限期地保持在狀態 R。
if (!vfork()) while (1) {}