如何触发stdin的end事件
发布于 10 年前 作者 leohxj 8706 次浏览 最后一次编辑是 8 年前

Node文档Process中,关于stdin的代码如下:

process.stdin.setEncoding('utf8');

process.stdin.on('readable', function() {
  var chunk = process.stdin.read();
  if (chunk !== null) {
    process.stdout.write('data: ' + chunk);
  }
});

process.stdin.on('end', function() {
  process.stdout.write('end');
});

我在windows环境下,运行效果如下: 图片

第一段输入abc正常输出abc,第二段什么都没输入,居然也输出了,难道不是null吗?

第三段输入ctrl+dctrl+z,都没有退出。

第四段输入ctrl+c,才退出,但是没有触发end事件。

请问这里的end事件如何触发??

3 回复

在readable事件处理中,检测输入结果是否满足结束条件,如是否输入回车,当满足输入结束条件时,使用process.stdin.emit(’end‘)手动触发end事件。

Ctrl-Z要回车后才好使吧,不回车不行

如果你什么字符都没有输入,但是你最后肯定回车了,系统会读入你输入的回车符,并把它作为一个输入,所以你的Null 判断条件要改一下。

回到顶部