所以我尝试在 NodeJS 中制作一个脚本,它可以从衍生的子进程中获取输出并将其打印到控制台,并从用户那里获取输入并将其发送到子进程并按 enter。我目前有这个设置:
function log(data) {
process.stdout.write(data.toString())
}
childProcess.stdout.on('data', log)
childProcess.stderr.on('data', log)
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Command>> ", cmd => {
childProcess.stdin.write(cmd + '\n')
})
但是如果在子进程给出第一个输出时我没有给它一个答案,它会记录我的光标所在的位置:在问题上。如果可能的话,我也希望将输入提示保留在底部,但这不是太重要。
我该怎么做呢?感谢所有帮助,谢谢!
最佳答案
因此,感谢@Bergi 的评论,我仔细研究了 readline
,并找到了一种不同的方法。这是我所做的:
function log(data) {
readline.cursorTo(process.stdout, 0, process.stdout.rows + 1)
process.stdout.write(data.toString())
}
childProcess.stdout.on('data', log)
childProcess.stderr.on('data', log)
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
prompt: ''
})
rl.on('line', (line) => {
childProcess.stdin.write(line.trim() + '\n')
rl.prompt()
})
我承认,这不是最好的,但这是我所需要的:)谢谢 Bergi!
关于javascript - 在 NodeJS 中同时输入和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62894335/