簡體   English   中英

在Python中捕獲信號

[英]Trapping signals in Python

根據文件

沒有辦法暫時從關鍵部分“阻止”信號(因為所有Unix版本都不支持)。

什么阻止我使用signal.signal(signum,SIG_IGN)阻止它,然后添加信號?

阻止你的是,如果信號在SIG_IGN到位時實際到達,那么它將被忽略並丟棄。 當你稍后再添加信號時,為時已晚,因為它已經消失了,你永遠不會得知它發生了。

因此,您將“忽略”(=拋棄)信號而不是“阻止”它(=保留它以便在關鍵部分結束時進行處理)。 你在這里的困惑可能只是因為我不明白“阻塞”信號意味着什么:它意味着操作系統掛在信號上,讓它等待直到你的關鍵部分完成。

請參閱(作為此類各種問題的一個很好的參考)W。Richard Steven 在UNIX環境中高級編程 我的版本中的第10.8節“可靠的信號術語和語義”是我在回答之前檢查過的,以確定我的答案。

更新:在我的Ubuntu筆記本電腦上,“man sigprocmask”(如果安裝了manpages-dev)似乎是開始學習信號阻塞的手冊頁。 同樣,正如Python文檔所述,這在所有Unix下都不可用,所以如果你真的使用“sigprocmask”,不要指望你的舊Irix或AIX盒子運行你的Python程序。 但也許你並不擔心。 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM