我有一個父進程,它派生了一些子進程。我正在尋找一些方法,以便子進程可以使用消息與父進程進行通信。我嘗試將父進程的pid發送給子進程,如果我可以使用父進程的pid發回消息,那將是非常好的。是否可以使用pid查找進程並向其發送消息?
在此先感謝。
我有一個父進程,它派生了一些子進程。我正在尋找一些方法,以便子進程可以使用消息與父進程進行通信。我嘗試將父進程的pid發送給子進程,如果我可以使用父進程的pid發回消息,那將是非常好的。是否可以使用pid查找進程並向其發送消息?
在此先感謝。
如果您使用的是child_process.fork(),那麼當您創建新叉時,將返回Child Process。
而且根據文檔:
返回的子進程將有額外的通信 聲道內置,使信息傳遞回來,父母和孩子之間來回 。有關詳細信息,請參閱child.send()。
重要的是要記住,產生的Node.js子進程 獨立於父進程,除了在兩者之間建立的IPC通信 通道之外。每個進程都擁有自己的 內存,並擁有自己的V8實例。由於需要額外的 資源分配,因此不推薦產生大量的子節點 。
這裏是爲child.send
哪裏可以找到這段代碼的機制的文檔:
例如,在父腳本:
const cp = require('child_process');
const n = cp.fork(`${__dirname}/sub.js`);
n.on('message', (m) => {
console.log('PARENT got message:', m);
});
n.send({ hello: 'world' });
然後孩子劇本, 'sub.js'可能看起來像這樣:
process.on('message', (m) => {
console.log('CHILD got message:', m);
});
process.send({ foo: 'bar' });
如果我爲這個1子進程分配更多的數據,並且我將與它們進行通信,我應該考慮使用'cluster'模塊嗎? – SuperManEver
@NikitaLuparev這個答案可能會幫助你作出決定http://stackoverflow.com/questions/13367607/what-are-the-effective-differences-between-child-process-fork-and-cluster-fork –
爲什麼不使用[內置方法](https://nodejs.org/api/child_process.html#child_process_child_send_message_sendhandle_options_callback)? – robertklep