2016-07-04 51 views
2

我有一個父進程,它派生了一些子進程。我正在尋找一些方法,以便子進程可以使用消息與父進程進行通信。我嘗試將父進程的pid發送給子進程,如果我可以使用父進程的pid發回消息,那將是非常好的。是否可以使用pid查找進程並向其發送消息?

在此先感謝。

+1

爲什麼不使用[內置方法](https://nodejs.org/api/child_process.html#child_process_child_send_message_sendhandle_options_callback)? – robertklep

回答

2

如果您使用的是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' }); 
+0

如果我爲這個1子進程分配更多的數據,並且我將與它們進行通信,我應該考慮使用'cluster'模塊嗎? – SuperManEver

+1

@NikitaLuparev這個答案可能會幫助你作出決定http://stackoverflow.com/questions/13367607/what-are-the-effective-differences-between-child-process-fork-and-cluster-fork –

相關問題