簡體   English   中英

通過帶有妖魔化的命名管道讀取和寫入數據

[英]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.

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