내 노드 프로그램의 서브 프로세스로 루비 인스턴스를 시작하려고합니다. 실제로 모든 것이 정상이지만 루비의 STDIN 및 STDOUT과 상호 작용할 수는 없습니다.ruby subprocess with 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 문이 실행되지 않습니다 후 세척하려고했습니다, 루비 파일이 제대로 시작 되나 노드로부터 아무것도받지 않습니다 말할 수 있습니다.
나는 당신의 예제를 사용해 보았지만, 루비는 로그 파일을 생성하기도 전에 멈추는 것처럼 보인다. 어떤 아이디어? http://stackoverflow.com/questions/6902641/node-js- ruby-subprocess-hangs –