[英]Reading and writing data via named pipe with demonization
我有兩個腳本:
第一個(“讀取器”)正在從命名管道讀取數據,第二個(“寫入器”)正在將數據寫入命名管道。 我從守護程序運行“ Writer”(守護程序是使用雙叉機制創建的)。 如果'Writer'崩潰,我想在'Reader'中打印有關它的消息。 請參閱以下Python代碼(“閱讀器”):
pipe = open(pipe_path, 'r')
while True:
data = pipe.readline()
if not data:
print('Alarm')
break
但是,當“ Writer”崩潰時,“ Reader”卡在以下行中:
data = pipe.readline()
但是,如果我從終端運行“ Writer”,則一切正常(當不在管道中的數據時,正在顯示警報消息)。 如果我用以下方法打開管道,則一切正常:
os.open(pipe_path, os.O_RDONLY | os.O_NONBLOCK)
但是這種方法不適合我,因為當“作家”開始將數據寫入管道時,我需要等待一段時間才能開始
為了不創建僵屍,我接下來在守護進程中執行以下操作:
def childHandler(signum, frame):
os.wait3(os.WNOHANG)
signal.signal(signal.SIGCHLD, zombieKiller)
如何防止“閱讀器”卡住並正確處理子進程的信號?
嘗試在守護程序中使用此命令:
fdPipe = os.open(pipe_path, os.O_WRONLY | os.O_NONBLOCK)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.