Js:如何检测空的stdin流? [英] node.js: How to detect an empty stdin stream?

查看:0
本文介绍了Js:如何检测空的stdin流?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个node.js脚本/服务器,它在启动stdin时从stdin读取一些输入。然而,有时没有要传递的数据。这很麻烦,因为在本例中似乎既没有调用data事件,也没有调用end事件。如何在node.js代码中检测到这种情况?

我希望避免在输入的末尾附加特殊的"end"字符,以免给客户端带来不便。相关代码如下:

  var newHTML = '';
  var gfm = spawn(__dirname + '/node_modules/docter/bin/github-flavored-markdown.rb');
  process.stdin.on('data', function(chunk){
    gfm.stdin.write(chunk);
  });
  process.stdin.on('end', function(){
    gfm.stdin.end();
  });
  gfm.stdout.on('data', function(data) {
    newHTML += data;
  });
  gfm.on('exit',function(ecode){
    socket.emit('newContent', newHTML);
  });
  process.stdin.resume();

推荐答案

我认为可能发生的情况是,您根本没有发出标准的蒸汽。

äystein Steimler的示例显示您将/dev/NULL添加到您的应用程序中:

节点pipe.js<;/dev/空

然而,如果您根本不向应用程序传输标准输入,则从不寻址。仅运行node pipe.js将不会退出,因为它仍在等待stdin

您可以自己用其他Unix程序进行测试,例如cat

尝试运行此命令:

cat < /dev/null

现在尝试只运行:

cat
它不会退出,因为它正在等待标准输入。您可以在终端中输入,然后按Enter键发送到程序。在收到EOF之前,它仍然不会退出(并等待更多输入),您可以使用ctrl+d

这篇关于Js:如何检测空的stdin流?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆