subprocess.stdio
到子进程的管道稀疏数组,对应于传递给 child_process.spawn()
的 stdio
选项中已设置为值 'pipe'
的位置。subprocess.stdio[0]
、subprocess.stdio[1]
和 subprocess.stdio[2]
也可分别用作 subprocess.stdin
、subprocess.stdout
和 subprocess.stderr
。
¥A sparse array of pipes to the child process, corresponding with positions in
the stdio
option passed to child_process.spawn()
that have been set
to the value 'pipe'
. subprocess.stdio[0]
, subprocess.stdio[1]
, and
subprocess.stdio[2]
are also available as subprocess.stdin
,
subprocess.stdout
, and subprocess.stderr
, respectively.
在下面的示例中,只有子项的 fd 1
(stdout) 配置为管道,因此只有父项的 subprocess.stdio[1]
是流,数组中的所有其他值都是 null
。
¥In the following example, only the child's fd 1
(stdout) is configured as a
pipe, so only the parent's subprocess.stdio[1]
is a stream, all other values
in the array are null
.
const assert = require('node:assert');
const fs = require('node:fs');
const child_process = require('node:child_process');
const subprocess = child_process.spawn('ls', {
stdio: [
0, // Use parent's stdin for child.
'pipe', // Pipe child's stdout to parent.
fs.openSync('err.out', 'w'), // Direct child's stderr to a file.
],
});
assert.strictEqual(subprocess.stdio[0], null);
assert.strictEqual(subprocess.stdio[0], subprocess.stdin);
assert(subprocess.stdout);
assert.strictEqual(subprocess.stdio[1], subprocess.stdout);
assert.strictEqual(subprocess.stdio[2], null);
assert.strictEqual(subprocess.stdio[2], subprocess.stderr);
import assert from 'node:assert';
import fs from 'node:fs';
import child_process from 'node:child_process';
const subprocess = child_process.spawn('ls', {
stdio: [
0, // Use parent's stdin for child.
'pipe', // Pipe child's stdout to parent.
fs.openSync('err.out', 'w'), // Direct child's stderr to a file.
],
});
assert.strictEqual(subprocess.stdio[0], null);
assert.strictEqual(subprocess.stdio[0], subprocess.stdin);
assert(subprocess.stdout);
assert.strictEqual(subprocess.stdio[1], subprocess.stdout);
assert.strictEqual(subprocess.stdio[2], null);
assert.strictEqual(subprocess.stdio[2], subprocess.stderr);
如果无法成功生成子进程,则 subprocess.stdio
属性可以是 undefined
。
¥The subprocess.stdio
property can be undefined
if the child process could
not be successfully spawned.