在node.js的前台执行shell命令

我正在研究一个Node.js CLI脚本,作为其职责的一部分,有时需要从用户处获取大量的input文本。 现在,我只是使用非常基本的readline.prompt() 。 我想要一些更好的编辑function。 我想我可以像crontab -evisudo那样做,并且让脚本启动一个文本编辑器,将数据写入临时文件,并在文件退出后从中读取。 我已经尝试了一些从child_process库的东西,但他们都在后台启动应用程序,并不给他们的标准input或游标的控制。 就我而言,我需要像vim或nano这样的应用程序来运行整个控制台。 有没有办法做到这一点,或者我运气不好?

注意:这是一个内部项目,将运行在一台机器上,其源可能永远不会看到白天。 黑客的解决方法是受欢迎的,假设没有一个现有的软件包来做我所需要的。

你有没有设置child_process.spawn的stdio选项inheritance?

这样,subprocess将使用与顶级节点进程相同的stdin和stdout。

此代码适用于我(节点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); }); }); });