2010-09-16 115 views

回答

2

那麼,你如何區分卡住的進程和需要比平常花費更長時間才能完成的進程?簡短的回答是:不,您無法檢測到您的孩子進程是否卡住了。

我想說,爲了能夠檢測到這種情況,您需要與進程進行某種持續的通信(例如查看日誌文件,IPC或類似文件)。基於這種溝通,您可能能夠判斷何時以及是否有進程停滯。

+0

如何在嵌套子進程中使用通信?我在子進程中選擇某個模塊的原因是它依次使它自己的子進程。 – sultan 2010-09-16 07:14:32

+2

每個進程都有一個父進程,嵌套子進程有其父進程。如答覆中所述創建管道(IPC)。在這些進程之間寫入和接收這些進程,當它們被破壞,並且無法從它們讀取和寫入時,可以考慮進程掛起。 – pyfunc 2010-09-16 07:27:10

+0

我從現在開始關心IPC。感謝名單! – sultan 2010-09-16 07:34:58

1

我想,你在問,你如何在運行時發現子進程是否掛起。你不能輕易說出。一個過程可以做一個長時間運行的操作。上下文對於理解流程何時掛起很重要。

如果您希望某個進程對用戶輸入做出響應,並且長時間沒有響應,那麼我們認爲它已掛起。進程正在運行,可能正在等待一些永遠不會發生的事情。 「Hung Process」是一種人性化的方式,表示一個程序已經到了死衚衕,並且不再有用。

你可以有一個接一個計算素數的程序,可以運行eons並且不能被稱爲掛起進程。

+0

好的。首先,我們可以設置默認超時時間,然後根據需要終止進程。這是真的? – sultan 2010-09-16 07:11:50

+0

是但默認超時只能由用戶在上下文中確定。正如我在我的回覆中提到的那樣,如果你計算大質數,它可能需要很長時間。所以上下文是根據程序在做什麼以及對結論進行合理猜測來確定的。 – pyfunc 2010-09-16 07:14:28

+0

我嘗試使用瀏覽器的核心來呈現子流程中的一些內容。 – sultan 2010-09-16 07:33:10