Linux 的 stdin stdout 怎样实现, 我用 Node 怎样模拟?


比方我运行的一个脚本, 里面有接受用户输入的内容, 然后交互式返回处理后的结果,,
比方说就一个 REPL 吧, 需要有输入输出的功能,
但是为了其他的需要, 比如我遇到的是重新加载的正在开发的模块,
于是, 我需要加一层脚本, 用来管理我正在开发的模块,
于是 stdin stdout 就不是用户直接操作到的那个了...

我用 Node 尝试了把标准输入输出全做了重定向,, 可是没有成功,,

runner = spwan 'runhaskell', ['h.hs']
process.stdin.pipe runner.stdin
runner.stdout.pipe process.stdout
runner.stderr.pipe process.stderr

代码的结果是返回的输出不会立即输出, 而是在脚本被重启时没有时会一次性输出,,,
我猜是我对标准输入输出的理解有欠缺, 他们不能直接重定向?
求指点..

Linux node.js 终端

Ryusen 11 years, 7 months ago

估计是全缓冲导致的。看看nodejs里面对流的设置,改为行缓冲或者无缓冲吧。

做爱做的事 answered 11 years, 7 months ago

Your Answer