はじめまして、nodejsの子プロセスを使っている際に実現が上手くいかないため質問させていただきます。
###前提・実現したいこと
親プロセスからの指示に応じ、動作中の子プロセスの値を変更したいというのが目的です。
下記処理のように、無限ループしているところで、値を変更し、親プロセスからの指示で処理を中断したいのですが、親プロセスから子プロセスを起動後に親プロセスからのメッセージの受信が一切動いていないように現状見えています。
###該当のソースコード
--- 以下親プロセス ---
javascript
1// Generated by CoffeeScript 2.0.1 2(function() { 3 var child, child_process, i, len, ref, sendMsg; 4 5 child_process = require('child_process'); 6 7 child = child_process.fork('./child'); 8 9 child.on('message', function(receiveMsg) { 10 return console.log(receiveMsg); 11 }); 12 13 ref = ['Start', 'End']; 14 for (i = 0, len = ref.length; i < len; i++) { 15 sendMsg = ref[i]; 16 child.send({ 17 message: sendMsg 18 }); 19 } 20}).call(this);
--- 以下子プロセス ---
javascript
1// Generated by CoffeeScript 2.0.1 2(function() { 3 var i, j, msg; 4 5 console.log('child_process start'); 6 7 msg = 'child first'; 8 9 while (true) { 10 for (i = j = 1; j <= 1000000000; i = ++j) { // 表示が早すぎるためwaite処理として 11 i = i; 12 } 13 console.log(msg); 14 process.on('message', function(receiveMsg) { //メッセージを受信後msgを変更し、フラグを変えたい 15 console.log(msg); 16 return msg = receiveMsg; 17 }); 18 process.send('child to parent'); 19 if (msg === "End") { // 状態がEndなら処理終了 20 process.on('exit', function() { 21 return console.log('Exit child_process'); 22 }); 23 } 24 } 25 26}).call(this);
###補足情報(言語/FW/ツール等のバージョンなど)
ソースコードは、入門しやすいかと思いcoffeescriptで記述していたため、そのコードをjavascriptに変換したものです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/09 09:16