gpt4 book ai didi

javascript - 如何从控制台向 node.js stdin 发送 EOF 信号?

转载 作者:数据小太阳 更新时间:2023-10-29 04:13:31 25 4
gpt4 key购买 nike

我有一个简单的 node.js 应用程序来回显标准输入。当我在 Windows 控制台上以交互方式运行它时,我希望 control-Z 被识别为 EOF 信号。但事实并非如此。那么如何让 Node 应用程序将 control-Z 视为 EOF?

// testEcho.js

process.stdin.setEncoding('utf-8');
console.log("input is a TTY?:",process.stdin.isTTY);

process.stdin.on('readable',function() {
var vText = process.stdin.read();
if (vText != null)
console.log('echo: "%s"',vText);
process.stdout.write('> '); // prompt for next
});

process.stdin.on('end',function() { // Works for redirected input but not triggered by ^Z on TTY
console.log('end of input reached');
});

```

最佳答案

问题是您正在使用 process.stdin.on而不是 process.on()

看看我在这里做的修复,一切都应该很好和花花公子 :) 享受吧!

process.stdin.setEncoding('utf-8');
console.log("input is a TTY?:", process.stdin.isTTY);

process.stdin.on('readable',function() {
var vText = process.stdin.read();
if (vText != null)
console.log('echo: "%s"',vText);
process.stdout.write('> '); // prompt for next
});

process.on('SIGINT', function () {
console.log('Over and Out!');
process.exit(0);
});

我也替换了'end''SIGINT'因为这是被 CTRL+C 捕获的信号

您可以在此处阅读有关信号事件的信息:https://nodejs.org/api/process.html#process_signal_events

关于javascript - 如何从控制台向 node.js stdin 发送 EOF 信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30611942/

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