モジュール child_process
サブプロセス管理モジュール
引用:
1
2var child_process = require("child_process");
var child = child_process.spawn("ls");
子プロセスを作成する場合、options.stdio オプションを使用して、親プロセスと子プロセスの間で確立されるパイプを構成します。デフォルトでは、子プロセスの stdin、stdout、および stderr がリダイレクトされます。ChildProcessオブジェクトの対応する stdin、stdout、および stderr ストリーム。これは、options.stdio を ['pipe', 'pipe', 'pipe'] に設定することと同じです。
便宜上、options.stdio は次の文字列のいずれかになります。
- 'pipe': ['pipe', 'pipe', 'pipe'] (既定値) と同等です。
- 'ignore': ['ignore', 'ignore', 'ignore'] と同等。
- 'inherit': ['inherit', 'inherit', 'inherit'] または [0, 1, 2] と同等。
- 'pty': ['pty', 'pty', 'pty'] と同等。Windows はサポートされていません。
それ以外の場合、options.stdio の値は配列である必要があります (各インデックスは子プロセスのファイル記述子に対応します)。ファイル記述子 0、1、および 2 は、それぞれ stdin、stdout、および stderr に対応します。他のファイル記述子を指定して、親プロセスと子プロセスの間に追加のパイプを作成できます。値は次のいずれかです。
- 'pipe': 子プロセスと親プロセスの間にパイプを作成します。パイプの親エンドは、child_process オブジェクトの stdio[fd] 属性として親プロセスに公開されます。ファイル記述子 0、1、および 2 用に作成されたパイプは、それぞれ stdin、stdout、および stderr としても利用できます。
- 'ignore': 子プロセスのファイル記述子を無視するように fibjs に指示します。fibjs は生成されたプロセスのためにファイル記述子 0、1、2 を常に開いていますが、ファイル記述子を「無視」に設定すると、fibjs は /dev/null を開き、それを子プロセスのファイル記述子に追加します。
- 'inherit': 対応する stdio を親プロセスとの間でストリーミングします。最初の 3 つの位置では、これは次と同等です。process.stdin、process.stdoutとprocess.stderr. それ以外の位置では、「無視」と同等です。
- 'pty': サブプロセスは仮想端末で実行されます。現時点では、stdin と stdout のみが有効です。
- 正の整数: 整数値は、親プロセスで現在開いているファイル記述子として解釈されます。share< と同様に、子プロセスと共有されます。Stream>オブジェクトの方法。着信ソケットは Windows ではサポートされていません。
- null または未定義: デフォルト値を使用します。stdio のファイル記述子 0、1、および 2 (つまり、stdin、stdout、および stderr) に対して、パイプが作成されます。ファイル記述子 3 以上の場合、デフォルトは「無視」です。
1
2
3
4
5
6
7
8
9
10
11
12
13const {
spawn
} = require('child_process');
// 子进程使用父进程的 stdio。
spawn('prg', [], {
stdio: 'inherit'
});
// 衍生的子进程只共享 stderr。
spawn('prg', [], {
stdio: ['pipe', 'pipe', process.stderr]
});
nodejsを併用するユーザーは注意
child_process.exec(command, args)
fibjs の apiはnodejs の同名の api と似ていますが、Windows では、コマンド パラメーターの実行環境として cmd.exe を自動的に取りません。- fibjs の child_process.[spawn|exec|execFile|run] は、同期/コールバックを統合した非同期スタイルの関数です。
- 最後の引数が関数でない場合は同期
- 関数が最後の引数として渡された場合は非同期。
- fibjs の child_process.[exec|execFile] の戻り結果はオブジェクトであり、nodejs の同名の API が返すオブジェクトとはまったく異なります
- nodejs
child_process.run
には fibjs に対応する API はありません
静的関数
spawn
指定されたコマンドで子プロセスを発行します
1
2
3static ChildProcess child_process.spawn(String command,
Array args,
Object options = {});
呼び出しパラメーター:
- command: 文字列、実行するコマンドを指定します
- args: 配列、文字列引数のリストを指定します
- options: オブジェクト、作成パラメータを指定します
返される結果:
- ChildProcess、子プロセス オブジェクトを返します
オプションでサポートされる内容は次のとおりです。
1
2
3
4
5
6
7
8
9
10{
"cwd": "", // 子进程的当前的工作目录,缺省使用当前目录
"stdio": Array | String, // 子进程 stdio 配置
"env": {}, // 环境变量的键值对
"detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false
"uid": 0, // 设置用户进程的ID
"gid": 0, // 设置进程组的ID
"windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false
"windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false
}
指定されたコマンドで子プロセスを発行します
1
2static ChildProcess child_process.spawn(String command,
Object options = {});
呼び出しパラメーター:
- command: 文字列、実行するコマンドを指定します
- options: オブジェクト、作成パラメータを指定します
返される結果:
- ChildProcess、子プロセス オブジェクトを返します
オプションでサポートされる内容は次のとおりです。
1
2
3
4
5
6
7
8
9
10{
"cwd": "", // 子进程的当前的工作目录,缺省使用当前目录
"stdio": Array | String, // 子进程 stdio 配置
"env": {}, // 环境变量的键值对
"detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false
"uid": 0, // 设置用户进程的ID
"gid": 0, // 设置进程组的ID
"windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false
"windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false
}
exec
シェルでコマンドを実行し、出力をバッファリングします。コールバックとして実行すると、関数はサブプロセス オブジェクトを返します。
1
2static (Variant stdout, Variant stderr) child_process.exec(String command,
Object options = {}) async;
呼び出しパラメーター:
- command: 文字列、実行するコマンドを指定します
- options: オブジェクト、作成パラメータを指定します
返される結果:
- (バリアント stdout、バリアント stderr)、子プロセスの stdio 出力を返します
オプションでサポートされる内容は次のとおりです。
1
2
3
4
5
6
7
8
9
10{
"cwd": "", // 子进程的当前的工作目录,缺省使用当前目录
"env": {}, // 环境变量的键值对
"encoding": "utf8", // 指定返回结果的编码,缺省为 utf8
"detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false
"uid": 0, // 设置用户进程的ID
"gid": 0, // 设置进程组的ID
"windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false
"windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false
}
execFile
指定されたファイルを直接実行し、出力をバッファリングします。コールバック モードで実行すると、関数は子プロセス オブジェクトを返します。
1
2
3static (Variant stdout, Variant stderr) child_process.execFile(String command,
Array args,
Object options = {}) async;
呼び出しパラメーター:
- command: 文字列、実行するコマンドを指定します
- args: 配列、文字列引数のリストを指定します
- options: オブジェクト、作成パラメータを指定します
返される結果:
- (バリアント stdout、バリアント stderr)、子プロセスの stdio 出力を返します
オプションでサポートされる内容は次のとおりです。
1
2
3
4
5
6
7
8
9
10{
"cwd": "", // 子进程的当前的工作目录,缺省使用当前目录
"env": {}, // 环境变量的键值对
"encoding": "utf8", // 指定返回结果的编码,缺省为 utf8
"detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false
"uid": 0, // 设置用户进程的ID
"gid": 0, // 设置进程组的ID
"windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false
"windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false
}
指定されたファイルを直接実行し、出力をバッファリングします。コールバック モードで実行すると、関数は子プロセス オブジェクトを返します。
1
2static (Variant stdout, Variant stderr) child_process.execFile(String command,
Object options = {}) async;
呼び出しパラメーター:
- command: 文字列、実行するコマンドを指定します
- options: オブジェクト、作成パラメータを指定します
返される結果:
- (バリアント stdout、バリアント stderr)、子プロセスの stdio 出力を返します
オプションでサポートされる内容は次のとおりです。
1
2
3
4
5
6
7
8
9
10{
"cwd": "", // 子进程的当前的工作目录,缺省使用当前目录
"env": {}, // 环境变量的键值对
"encoding": "utf8", // 指定返回结果的编码,缺省为 utf8
"detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false
"uid": 0, // 设置用户进程的ID
"gid": 0, // 设置进程组的ID
"windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false
"windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false
}
fork
子プロセスでモジュールを実行する
1
2
3static ChildProcess child_process.fork(String module,
Array args,
Object options = {});
呼び出しパラメーター:
- module: 文字列、実行するコマンドを指定します
- args: 配列、文字列引数のリストを指定します
- options: オブジェクト、作成パラメータを指定します
返される結果:
- ChildProcess、子プロセス オブジェクトを返します
オプションでサポートされる内容は次のとおりです。
1
2
3
4
5
6
7
8
9
10{
"cwd": "", // 子进程的当前的工作目录,缺省使用当前目录
"stdio": Array | String, // 子进程 stdio 配置
"env": {}, // 环境变量的键值对
"detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false
"uid": 0, // 设置用户进程的ID
"gid": 0, // 设置进程组的ID
"windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false
"windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false
}
子プロセスでモジュールを実行する
1
2static ChildProcess child_process.fork(String module,
Object options = {});
呼び出しパラメーター:
- module: 文字列、実行するコマンドを指定します
- options: オブジェクト、作成パラメータを指定します
返される結果:
- ChildProcess、子プロセス オブジェクトを返します
オプションでサポートされる内容は次のとおりです。
1
2
3
4
5
6
7
8
9
10{
"cwd": "", // 子进程的当前的工作目录,缺省使用当前目录
"stdio": Array | String, // 子进程 stdio 配置
"env": {}, // 环境变量的键值对
"detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false
"uid": 0, // 设置用户进程的ID
"gid": 0, // 设置进程组的ID
"windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false
"windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false
}
run
指定されたファイルを直接実行して exitCode を返します。コールバック モードで実行すると、関数は子プロセス オブジェクトを返します。
1
2
3static Integer child_process.run(String command,
Array args,
Object options = {}) async;
呼び出しパラメーター:
- command: 文字列、実行するコマンドを指定します
- args: 配列、文字列引数のリストを指定します
- options: オブジェクト、作成パラメータを指定します
返される結果:
- Integer、子プロセスの exitCode を返します
オプションでサポートされる内容は次のとおりです。
1
2
3
4
5
6
7
8
9{
"cwd": "", // 子进程的当前的工作目录,缺省使用当前目录
"env": {}, // 环境变量的键值对
"detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false
"uid": 0, // 设置用户进程的ID
"gid": 0, // 设置进程组的ID
"windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false
"windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false
}
指定されたファイルを直接実行して exitCode を返します。コールバック モードで実行すると、関数は子プロセス オブジェクトを返します。
1
2static Integer child_process.run(String command,
Object options = {}) async;
呼び出しパラメーター:
- command: 文字列、実行するコマンドを指定します
- options: オブジェクト、作成パラメータを指定します
返される結果:
- Integer、子プロセスの exitCode を返します
オプションでサポートされる内容は次のとおりです。
1
2
3
4
5
6
7
8
9{
"cwd": "", // 子进程的当前的工作目录,缺省使用当前目录
"env": {}, // 环境变量的键值对
"detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false
"uid": 0, // 设置用户进程的ID
"gid": 0, // 设置进程组的ID
"windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false
"windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false
}