如何在节点中流入/流出文件描述符?

Bar*_*vds 7 file-descriptor stream child-process node.js

fs.createReadStream()fs.createWriteStream()仅支持文件的路径,但我需要从一个文件描述符(传递到/从一个子进程),读(或写).

注意我需要Streams,所以fs.open/fs.read/fs.write还不够.

Joe*_*and 14

当你调用fs.createReadStream时,你可以传入一个文件描述符:

var fs = require('fs');
var fd = fs.openSync('/tmp/tmp.js', 'r');
var s = fs.createReadStream(null, {fd: fd});
s.pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)

如果有fd选项,则忽略文件名.

  • 您需要传递像“fs.createReadStream('', {fd: fd})”这样的空字符串,而不是“null”。 (3认同)
  • 优秀!我发现反向也可以,`fs.createWriteStream(null,{fd:fd});`.奇怪的是,手册中没有记载,但它就像一个魅力. (2认同)
  • 哈哈"小心盯着" (2认同)