我在节点中写一个cli,我想打开用户$EDITOR来编辑从流( http响应IncomingMessage)读取的数据。
如何将数据发送到文件描述符?
在bash中,我可以这样写:
$EDITOR <(curl $url)或
$DIFF <(curl $url_1) <(curl $url_2)<(curl $url)扩展到类似于/proc/self/fd/11的东西
echo <(curl $url)
/proc/self/fd/11但是我该如何用javascript来写呢?
import cp from 'child_process'
const fisrt = request(...);
const second = require(...);
const first_fd = ???;
const second_fd = ???;
const proc = cp.spawn(process.env.DIFF, [first_fd, second_fd] { stdio: 'inherit' });好的,如果stream是由套接字或fd支持的,您可以将它传递给options.stdio,但是如果它不是,那么如果它是转换流呢?
options.stdio对象-与子进程共享引用tty、文件、套接字或管道的可读或可写流。流的底层文件描述符在子进程中复制到对应于stdio数组中的索引的fd中。流必须有一个底层描述符(在“打开”事件发生之前,文件流不会这样做)。
是的,我可以创建一个临时文件,但是没有临时文件,我可以这样做吗?
发布于 2019-07-25 21:53:48
您可以使用以下nodejs代码将下载的内容流到终端中的vim文本编辑器中:
const { spawn } = require('child_process');
const request = require('request');
//
request({
url: 'https://google.com'
}, function (err, res, body) {
const vi = spawn('vi', ['-'], { stdio: ['pipe', process.stdout, process.stderr] });
vi.stdin.write(body);
vi.stdin.end();
});然后从您的终端,如果您执行这段代码,它将下载谷歌的html,让您编辑和保存在一个文件。您可以使用:w myfile.txt保存到vim中的文件。
关于这个问题的进一步解读:https://2ality.com/2018/05/child-process-streams.html
https://stackoverflow.com/questions/56928613
复制相似问题