-1
基於示例here,我試圖從產卵Node.js的(v0.4.8)紅寶石過程(v1.8.7)。一個進程和一個空的日誌文件被創建,但沒有任何反應,直到我殺了它。如果我忽略STDIN.each_line
位,代碼運行良好。Node.js的紅寶石子掛
我起了疑心標準輸入沒有完成這樣的紅寶石還在等待輸入。也許ruby.stdin.write("ping\n");
不會做我認爲應該做的事情?
基於示例here,我試圖從產卵Node.js的(v0.4.8)紅寶石過程(v1.8.7)。一個進程和一個空的日誌文件被創建,但沒有任何反應,直到我殺了它。如果我忽略STDIN.each_line
位,代碼運行良好。Node.js的紅寶石子掛
我起了疑心標準輸入沒有完成這樣的紅寶石還在等待輸入。也許ruby.stdin.write("ping\n");
不會做我認爲應該做的事情?
這裏是我有一個似乎做你想要什麼:
var util = require('util'),
sys = require('sys'),
spawn = require('child_process').spawn,
ruby = spawn('ruby', [__dirname + '/process.rb']);
function trim(str) {
return str.replace(/^\s+|\s+$/, '');
}
ruby.stdout.on('data', function(data) {
console.log('stdout: ' + trim(data.toString()));
});
ruby.stdout.on('end', function(data) {
ruby.stdout.flush();
});
ruby.stderr.on('data', function(data) {
console.log('stderr: ' + data);
});
ruby.on('exit', function(code, signal) {
if(code != null) console.log('exit: ' + code);
else if(signal != null) console.log('killed: ' + signal);
});
ruby.stdin.write("ping\n");
ruby.stdin.end();
有你在自身運行Ruby代碼?你看到相同的行爲,還是按預期運行? – Pat
@pat如果我運行命令行Ruby代碼,輸入一些隨機文本,然後按回車,它呼應的文字,並創建在同一目錄下的日誌文件。 –
更正:它確實會創建一個空白的進程日誌文件,而不是我所期望的。我會更新我的問題。我還發現,如果我忽略STDIN.each_line部分,ruby文件可以正常工作。 –