Node.js FIFO - 写入文件描述符时进程挂起

标签 node.js file file-descriptor fifo

我有以下 Node.js 代码:

var fs=require('fs');
var util=require('util');

var n2c=fs.createReadStream('./n2c');
var c2n=fs.createReadStream('./c2n');

n2c.on('data', function(b){
        util.puts(b);
});
c2n.on('data',function(b){
        util.puts(b);
});

如您所见,我有两个 FIFO 文件描述符(使用以下方法创建:mkfifo n2cmkfifo c2nchmod 777 n2c c2n)

当我在另一个窗口中 echo "Hello"> n2c 时,“Hello”显示正常。但当我尝试再次执行此操作时,echo "Hello"> n2c 挂起,并且 node.js 窗口中没有显示任何内容。

我该如何解决这个问题?我希望能够在 Node.js 窗口中无限地回显“Hello”。

请帮忙!

最佳答案

这是使用终端测试流的简单方法:

$ cat > n2c
  Here you can type stuff
  that will be streamed whenever you add a
  newline.
  You can send EOF (end of file) by
  pressing Ctrl+D.

当您返回时,流将为 Node 提供每一行,并且在您执行 Ctrl+D 或以其他方式发送 EOF 字符之前不会中断。

echo 在一行后消失的原因是它会在您键入任何内容后自动发送 EOF。

答案可能有点晚了,但对其他人来说可能有用。

关于Node.js FIFO - 写入文件描述符时进程挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9018526/

相关文章:

node.js - 强循环/环回 4 : how to disable authentication for Explorer component over REST?

node.js - process.nextTick 和 queueMicrotask 的区别

file - 在批处理文件中将 +1 附加到日期

Bash 双进程替换给出了错误的文件描述符

linux - 如何识别两个文件脚本是否指向同一个文件

javascript - 搜索查询以在 React 中过滤结果

node.js - 从 Gridfs 读取 block 并转换为缓冲区

Python——输入 float 参数列表

windows - 为什么使用 GetFileSizeEx() 将文件标记为只读时会出现 "Invalid handle"错误?

c - 程序卡住了,管道文件描述符何时不应该打开?