我试图启动一个红宝石实例作为我的节点程序的子进程。事实上,一切都很好,但我无法与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