8

子プロセスを生成するときに追加の stdio (fd=4) を使用する node.js API ドキュメント:

// Open an extra fd=4, to interact with programs present a
// startd-style interface.
spawn('prg', [], { stdio: ['pipe', null, null, null, 'pipe'] });

そのstdioは、を介して親プロセスで利用できますChildProcess.stdio[fd]

子プロセスはこれらの余分な stdio にどのようにアクセスできますか? ファイル記述子 3 (fd=3) でパイプの代わりにストリームを使用しましょう。

/* parent process */

// open file for read/write
var mStream = fs.openSync('./shared-stream', 'r+');

// spawn child process with stream object as fd=3
spawn('node', ['/path/to/child.js'], {stdio: [0, 1, 2, mStream] });
4

1 に答える 1

9

fs.readnode.js はこれを API で文書化していませんが、およびを使用して、ファイル記述子のインデックス番号を使用してこれらのストリームを読み書きできますfs.write

子プロセスで利用可能なこれらの stdios の存在を示すオブジェクトを検査しても何も見つかりませんでしたprocess。私の知る限り、これらの stdios が子プロセスで利用可能かどうかを検出することはできません。

ただし、子プロセスがこれらの標準入出力で生成されることが確実にわかっている場合は、次のように読み取り/書き込み関数を使用できます。

var fd_index = 3;
fs.write(fd_index, new Buffer(data, 'utf8'), 0, data.length, null, function(err, bytesWritten, buffer) {
   if(err) return failure();
   else ...
   // success
});
于 2014-01-20T21:38:55.430 に答える