好吧,所以這可能是一個奇怪的情況,但請忍受我。如何給自己發信號(相同的PID)?
我有經由SWIG接口調用了一個C++類Python程序。我來到了一個點,我必須從C++庫中異步發送信號(以更新狀態)Python代碼。最初我沒有低效的輪詢輪詢標誌。我想用SIGUSR1
來替換它。
所以,問題是,我發現,即使這些單獨的「線程」,它們共享相同的PID。這是Python和C++程序都報告相同的PID。我使用kill
發送了信號,Python代碼在它的處理程序中捕獲了它,但是它並沒有像我期望的那樣中斷代碼。我嘗試了兩種在Python代碼中等待信號的方法,第一個py調用Python的signal.pause
,我認爲它應該在接收信號時被搶佔。另一個是簡單的time.sleep
,它應該做的基本相同的事情 - 當信號通過時返回。
出於某種原因,這是行不通的 - 我的C++代碼發送信號時,Python代碼接收它並調用處理程序,但是,暫停/睡眠調用一去不復返。
如果能夠正確信號相同的過程,你會怎麼辦呢?
(如果這只是愚蠢原諒我,繼續前進)
注意:這是一個GNU電臺節目,所以主要的Python線程創建包括C++信號處理塊的流圖。我想從一個C++塊發出主要的Python程序信號。 –