gpt4 book ai didi

node.js - 从node.js在前台执行shell命令

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:30 27 4
gpt4 key购买 nike

我正在开发一个 Node.js CLI 脚本,作为其职责的一部分,有时需要从用户那里获取大量输入文本。现在,我只使用非常基本的 readline.prompt()。我想要一些更好的编辑功能。我认为我可以像 crontab -e 或 visudo 一样启动一个文本编辑器,将数据写入临时文件,并在退出后从该文件中读取数据,而不是重新发明轮子。我已经尝试了 child_process 库中的一些功能,但它们都在后台启动应用程序,并且不让它们控制标准输入或光标。就我而言,我需要像 vim 或 nano 这样的应用程序在运行时占用整个控制台。有没有办法做到这一点,还是我运气不好?

注意:这是一个将在单台计算机上运行的内部项目,其源代码可能永远不会公开。假设没有现有的软件包可以完成我的需要,欢迎使用黑客解决方法。

最佳答案

是否将child_process.spawn的stdio选项设置为继承?

这样,子进程将使用与顶级 Node 进程相同的 stdin 和 stdout。

此代码适用于我( Node v4.3.2):

'use strict';

var fs = require('fs');
var child_process = require('child_process');
var file = '/tmp/node-editor-test';

fs.writeFile(file, "Node Editor", function () {
var child = child_process.spawn('vim', [file], {stdio: 'inherit'});

child.on('close', function () {
fs.readFile(file, 'utf8', function (err, text) {
console.log('File content is now', text);
});
});
});

关于node.js - 从node.js在前台执行shell命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225225/

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