簡體   English   中英

Python [子]進程向節點[父]進程發送消息

[英]Python [child] process sending message to Node [parent] process

NodeJS派生的Python進程-Python的process.send()的替代方案?

我遵循了上面的解決方案,但似乎沒有用(子python代碼未發送任何消息。這是我的代碼:

const spawn = require('child_process').spawn;

var child = spawn('python3', ['child.py'], {
    stdio:[null, null, null, 'pipe']
});

child.on('message', function(message) {
    console.log('Received message...');
    console.log(message);
});

# !/usr/bin/python3
import os

os.write(3, str.encode("HELLO"))

我可以看到可能出了什么問題。 請幫忙。

我認為第四個參數需要是“ ipc”而不是“ pipe”以啟用這種樣式的消息傳遞。

'ipc'-創建一個IPC通道,用於在父級和子級之間傳遞消息/文件描述符。 一個ChildProcess最多可以具有一個IPC stdio文件描述符。 設置此選項將啟用subprocess.send()方法。 如果子級將JSON消息寫入此文件描述符,則將在父級中觸發subprocess.on('message')事件處理程序。 如果子進程是Node.js進程,則IPC通道的存在將啟用進程中的process.send(),process.disconnect(),process.on('disconnect')和process.on('message')。兒童。

https://nodejs.org/api/child_process.html#child_process_options_stdio

從默認情況下進行設置的fork的描述中(不同於其他語言的spawn):

stdio | 參見child_process.spawn()的stdio。 提供此選項后,它將覆蓋無聲。 如果使用數組變量,則它必須恰好包含一個值為'ipc'的項目,否則將引發錯誤。 例如[0,1,2,'ipc']。

https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options

暫無
暫無

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

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