2017-04-05 46 views
0

,一個進程在開始時被賦予高優先級。然而,它發生了信號14的崩潰。修正是在「文件寫入操作」周圍添加一對「setDefaultPriority」和「improvePriority」。 任何人都可以告訴我爲什麼「較低的流程優先級」可以解決它。在我們的系統中很好地降低了進程優先級linux

回答

0

這可能不是一個修復,而是一些應用程序錯誤的解決方法。

信號14是SIGALRM,主要用於實現超時。在某些地方,應用程序使用alarm(),這種方式可以調度未來的信號。當信號到達時,應用程序的第二部分(稱爲信號處理程序)應該準備好接收它。

信號14未捕獲,因此這兩部分沒有正確同步(這是一個錯誤!)。

機會是稍微改變優先級使信號處理程序在信號到達時準備就緒。有可能它不適用於不同的場合或不同的系統。

+0

嗨,謝謝你的回覆。是否與我的情況下阻止呼叫有關? – nathan

+0

通常,即使被阻塞的調用也會在EINT中出錯,但[還有其他可能性](https://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html#Interrupted-Primitives)。 – kubanczyk

相關問題