我想在perl中編寫一個健壯的守護進程,它將在Linux上運行,並遵循in this excellent answer描述的模板。不過,我的情況有一些差異:首先我使用Parallel::ForkManagerstart() and next
;到餐桌上,緊接着exec('handle_event.pl')
管理fork()的守護進程的信號處理
在這種情況下的事件,我有以下問題:
- 我應該在哪裏定義我的信號處理程序。我應該在父進程(守護進程)中定義它們並假定它們將在子進程中被繼承嗎?
- 如果我運行
exec('handle_event.pl')
處理程序會通過exec繼承(我知道它們是通過fork
繼承的)? - 如果我在
handle_event.pl
中重新定義一個新的信號處理程序,這個定義是否會覆蓋父定義的定義? - 這種情況下的最佳做法是什麼?
謝謝
謝謝。這是非常有幫助和清晰的 –
並非所有的信號都將被設置爲默認值,如果信號被忽略,它將在exec後仍然被忽略。 – gorilla
@gorilla:謝謝!答覆修正。 – JaakkoK