Js:如何检测空的stdin流? [英] node.js: How to detect an empty stdin stream?
本文介绍了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屋!
查看全文