我試圖啓動一個紅寶石實例作爲我的節點程序的子進程。事實上,一切都很好,但我無法與ruby的STDIN和STDOUT交互。 (當然,Ruby程序在我的終端工作與我的鍵盤輸入)Ruby的子進程與node.js
所以這是我想工作的簡化代碼...
simpleproc.js
var util = require('util'),
spawn = require('child_process').spawn,
ruby = spawn('ruby', [__dirname + '/process.rb']);
ruby.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
ruby.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
ruby.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
ruby.stdin.write("ping\n");
過程。 rb
f = File.new("process.log", "w")
f.write "=== Hello! ===\n"
STDIN.each_line do |line|
STDOUT.write line
f.write line
end
它有什麼問題?我已經設法得到另一個進程工作......但在這裏,沒有IO!什麼都沒發生 !
編輯:我修改了紅寶石文件,以顯示,與節點,該文件只寫入=== Hello! ===\n
裏面。因此,我們可以說,紅寶石文件正確啓動,但沒有收到任何節點(我試過STDOUT.write
,但永遠不會執行do語句後刷新。
我試過使用你的例子,但ruby似乎掛起之前它甚至創建該日誌文件。任何想法?http://stackoverflow.com/questions/6902641/node-js- ruby-subprocess-hangs – 2011-08-01 18:25:07