gpt4 book ai didi

node.js:如何检测空的标准输入流?

转载 作者:IT老高 更新时间:2023-10-28 22:12:13 31 4
gpt4 key购买 nike

我有一个 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 中的 end 事件检测到空的或没有 STDIN 流。

这个简单的脚本 stdin.js 证明:

process.stdin.on( 'data', function(data) { console.log( data ) } );
process.stdin.on( 'end', function() { console.log( 'EOF' ) } );

不同的场景:

$ echo test | node stdin.js
<Buffer 74 65 73 74 0a>
EOF
$ echo -n | node stdin.js
EOF
$ node stdin.js < /dev/null
EOF
$

这个脚本 pipe.js 演示了使用管道来生成子进程的效果非常好:

var spawn = require('child_process').spawn;
var cat = spawn( '/bin/cat' );
cat.stdout.on( 'data', function(data) { console.log( data ) } );
cat.stdout.on( 'end', function() { console.log( 'EOF' ) } );

process.stdin.pipe(cat.stdin);

如预期:

$ echo test | node pipe.js
<Buffer 74 65 73 74 0a>
EOF
$ echo -n | node pipe.js
EOF
$ node pipe.js < /dev/null
EOF
$

关于node.js:如何检测空的标准输入流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9231847/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com