gpt4 book ai didi

javascript - 带有 node.js 的 Ruby 子进程

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:51 24 4
gpt4 key购买 nike

我正在尝试启动一个 ruby​​ 实例作为我的 Node 程序的子进程。事实上,一切都很好,但我无法与 ruby​​ 的 STDIN 和 STDOUT 进行交互。 (当然,ruby 程序在我的终端中通过键盘输入工作)

所以这是我想要开始工作的简化代码......

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 !没有任何反应!

编辑:我修改了 ruby​​ 文件以表明,对于 Node ,该文件仅使用 === 编写 你好! ===\n 里面。所以我们可以说,ruby 文件已正确启动,但未从 Node 接收到任何内容(我尝试在 STDOUT.write 之后刷新,但从未执行 do 语句。

最佳答案

STDOUT.write 之后在 ruby​​ 端尝试 STDOUT.flush,因为正在缓冲输出。

关于javascript - 带有 node.js 的 Ruby 子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5358105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com