モジュール基本モジュール

モジュール子プロセス

子プロセス管理モジュール

参照方法:

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. 「パイプ」: 子プロセスと親プロセスの間にパイプを作成します。パイプの親は、child_process オブジェクトの stdio[fd] 属性として親プロセスに公開されます。ファイル記述子 0、1、および 2 用に作成されたパイプは、それぞれ stdin、stdout、および stderr としても使用できます。
  2. 'ignore': 子プロセスのファイル記述子を無視するように fibjs に指示します。fibjs は、生成されたプロセスのファイル記述子 0、1、および 2 を常に開きますが、ファイル記述子を「ignore」に設定すると、fibjs は /dev/null を開き、それを子プロセスのファイル記述子にアタッチできます。
  3. 'inherit': 対応する stdio を親プロセスとの間で受け渡します。最初の 3 つの位置では、これはprocess.stdinprocess.stdoutprocess.stderr. それ以外の位置では、「無視」と同じです。
  4. 'pty': 子プロセスは仮想端末で実行されます。このとき、stdin と stdout のみが有効です。
  5. 正の整数: 整数値は、親プロセスで現在開かれているファイル記述子として解釈されます。共有と同様に、子プロセスと共有されます<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を併用している方はご注意ください

  • fibjs はchild_process.exec(command, args)同じ名前の api nodejs と同様の機能ですが、Windows では、実行環境パラメーターとして cmd.exe コマンドを自動的に実行しません。
  • fibjs の child_process.[spawn|exec|execFile|run] は、sync/callback 統合非同期スタイル関数です。
    • 最後のパラメータが関数でない場合、それは同期です
    • 関数が最後のパラメータとして渡される場合、それは非同期です。
  • fibjs child_process.[exec|execFile] の戻り結果がオブジェクトであり、同名のnodejs apiが返すオブジェクトとは完全に異なる
  • fibjs はchild_process.run、nodejs に対応する APIがありません

静的関数

spawn

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

1 2 3
static ChildProcess child_process.spawn(String command, Array args, Object options = {});

呼び出しパラメータ:

  • command: 文字列、実行するコマンドを指定します
  • args: 配列、文字列パラメータのリストを指定
  • options: オブジェクト、作成パラメータを指定

結果を返す:

オプションでサポートされる内容は次のとおりです。

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: オブジェクト、作成パラメータを指定

結果を返す:

オプションでサポートされる内容は次のとおりです。

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: オブジェクト、作成パラメータを指定

結果を返す:

  • (Variant stdout、Variant 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: オブジェクト、作成パラメータを指定

結果を返す:

  • (Variant stdout、Variant 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: オブジェクト、作成パラメータを指定

結果を返す:

  • (Variant stdout、Variant 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: オブジェクト、作成パラメータを指定

結果を返す:

オプションでサポートされる内容は次のとおりです。

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: オブジェクト、作成パラメータを指定

結果を返す:

オプションでサポートされる内容は次のとおりです。

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 }