亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

nodejs關于進程間發送句柄的一點疑問

nodejs關于進程間發送句柄的一點疑問

慕田峪7331174 2018-11-14 13:15:21
先看一個一個應用程序,通過net服務觸發 http服務;簡單來說就是 初始化兩個服務 一個net服務 一個http服務,用net服務監聽端口,客戶端連接后,觸發http服務的連接事件,并將socket傳給http服務;里面有一行注釋,如果關閉注釋,服務就關閉了;但是再看另一個應用,這里涉及到了子進程模塊,還有進程間的句柄傳遞;看程序;父進程文件:子進程文件:大家看父進程文件里也有一行注釋,但是這里的注釋去掉后,服務能正常工作,這是什么原因呢?父進程的net服務已經關閉了,已經不監聽3000端口了,想不明不白在代碼層面理解 父進程結束了,但是子進程沒有結束,但是請求的流是怎么運行的呢,或者說這個代碼是怎么運行的,思緒有點亂啊,node深入淺出,讀起來還真是有點費勁啊
查看完整描述

1 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

google了一下,在stackoverflow上找到一個類似的問題

關鍵應該在這一段上handleConversion
在send時有handle參數的情況下,會調用handleConversion[type]
可以看到在type:"net.Server"時,send的是server._handle
而接收時是這樣的

got: function(message, handle, emit) {

? ? ? var self = this;


? ? ? var server = new net.Server();

? ? ? server.listen(handle, function() {

? ? ? ? emit(server);

? ? ? });

}

也就是說父進程send了server._handle
而子進程則使用這個handle重建了一個server
所以實際上子進程中的server已經跟父進程中的不是同一個了,父進程的server.close自然不會對子進程產生影響


查看完整回答
反對 回復 2018-12-08
  • 1 回答
  • 0 關注
  • 499 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號