【发布时间】:2012-03-03 03:53:48
【问题描述】:
我有一个 node.js 脚本/服务器,它在启动时从标准输入读取一些输入。但是,有时没有要传入的数据。这很麻烦,因为在这种情况下似乎既没有调用data 也没有调用end 事件。如何检测 node.js 代码中的这种情况?
我想避免在输入末尾附加特殊的“结束”字符,以免给客户带来不便。相关代码如下:
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();
【问题讨论】:
-
你试过 process.stdin.on('error', function(){}) 吗?
-
或 gfm.stdout.on('error', function() {})
-
找到解决方案了吗?这似乎是不可能的。
-
这在 Windows 和 Linux 上都非常适合我。我每次都收到
end事件,即使从/dev/null重定向stdin也是如此。会不会是别的东西?在一些相关的说明中,您应该使用流接口将您的stdin传递到gfm。 -
在我看来,您的 github-flavored-markdown.rb 脚本在从标准输入读取时阻塞,这可以解释这种行为。