モジュールベースモジュール

モジュール child_process

サブプロセス管理モジュール

引用:

1 2
var 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 に対応します。他のファイル記述子を指定して、親プロセスと子プロセスの間に追加のパイプを作成できます。値は次のいずれかです。

  1. 'pipe': 子プロセスと親プロセスの間にパイプを作成します。パイプの親エンドは、child_process オブジェクトの stdio[fd] 属性として親プロセスに公開されます。ファイル記述子 0、1、および 2 用に作成されたパイプは、それぞれ stdin、stdout、および stderr としても利用できます。
  2. 'ignore': 子プロセスのファイル記述子を無視するように fibjs に指示します。fibjs は生成されたプロセスのためにファイル記述子 0、1、2 を常に開いていますが、ファイル記述子を「無視」に設定すると、fibjs は /dev/null を開き、それを子プロセスのファイル記述子に追加します。
  3. 'inherit': 対応する stdio を親プロセスとの間でストリーミングします。最初の 3 つの位置では、これは次と同等です。process.stdinprocess.stdoutprocess.stderr. それ以外の位置では、「無視」と同等です。
  4. 'pty': サブプロセスは仮想端末で実行されます。現時点では、stdin と stdout のみが有効です。
  5. 正の整数: 整数値は、親プロセスで現在開いているファイル記述子として解釈されます。share< と同様に、子プロセスと共有されます。Stream>オブジェクトの方法。着信ソケットは Windows ではサポートされていません。
  6. null または未定義: デフォルト値を使用します。stdio のファイル記述子 0、1、および 2 (つまり、stdin、stdout、および stderr) に対して、パイプが作成されます。ファイル記述子 3 以上の場合、デフォルトは「無視」です。
1 2 3 4 5 6 7 8 9 10 11 12 13
const { 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 が返すオブジェクトとはまったく異なります
  • nodejschild_process.runには fibjs に対応する API はありません

静的関数

spawn

指定されたコマンドで子プロセスを発行します

1 2 3
static 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 2
static 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 2
static (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 3
static (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 2
static (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 3
static 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 2
static 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 3
static 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 2
static 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 }