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

モジュール子プロセス

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

引用:

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.stdoutそしてprocess.stderr。他の位置では、「無視」と同等です。
  4. 'pty': 子プロセスは仮想端末で実行されます。現時点では、stdin と stdout のみが有効です。
  5. 正の整数: 整数値は、親プロセスで現在開いているファイル記述子として解釈されます。 < の共有と同様に、子プロセスと共有されます。Stream> オブジェクトの方法。受信ソケットは Windows ではサポートされていません。
  6. null または未定義: デフォルト値を使用します。パイプは、stdio (つまり、stdin、stdout、および stderr) のファイル記述子 0、1、および 2 に対して作成されます。ファイル記述子 3 以降の場合、デフォルトは「無視」です。
1 2 3 4 5 6 7 8 9 10 11 12 13
const { spawn } = require('child_process'); // child process uses parent's stdio spawn('prg', [], { stdio: 'inherit' }); // child process uses parent's stderr spawn('prg', [], { stdio: ['pipe', 'pipe', process.stderr] });

Nodejs も使用するユーザーは、次の点に注意してください。

  • fibjs のchild_process.exec(command, args)同名の API の機能は、nodejs の API と似ていますが、Windows では、cmd.exe がコマンド パラメーターの実行環境として自動的に使用されません。
  • fibjs の child_process.[spawn|exec|execFile|run] は、同期/コールバックを統合する非同期スタイルの関数です。
    • 最後のパラメータが関数でない場合は同期されます。
    • 関数が最後のパラメータとして渡される場合、それは非同期です。
  • fibjs の child_process.[exec|execFile] の戻り結果はオブジェクトであり、 nodejs API によって返される同じ名前のオブジェクトとはまったく異なります。
  • fibjschild_process.runには、nodejs に対応する 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": "", // working directory of the child process, default to current directory "stdio": Array | String, // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // configure the group identity of the process "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

指定されたコマンドで子プロセスを公開します。

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": "", // working directory of the child process, default to current directory "stdio": Array | String, // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

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": "", // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "encoding": "utf8", // specify the character encoding used to decode the stdout and stderr output "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

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": "", // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "encoding": "utf8", // specify the character encoding used to decode the stdout and stderr output "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

指定されたファイルを直接実行し、出力をバッファリングします。コールバック モードで実行すると、関数は子プロセス オブジェクトを返します。

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": "", // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "encoding": "utf8", // specify the character encoding used to decode the stdout and stderr output "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

spawnSync

指定されたコマンドで子プロセスを公開します。

1 2 3
static (Integer pid, NArray output, Variant stdout, Variant stderr, Integer status, Variant error) child_process.spawnSync(String command, Array args, Object options = {}) async;

呼び出しパラメータ:

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

返される結果:

  • (整数 pid、NArray 出力、バリアント stdout、バリアント stderr、整数ステータス、バリアント エラー)、子プロセスの実行結果を返します。

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

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // working directory of the child process, default to current directory "stdio": Array | String, // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // configure the group identity of the process "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

指定されたコマンドで子プロセスを公開します。

1 2
static (Integer pid, NArray output, Variant stdout, Variant stderr, Integer status, Variant error) child_process.spawnSync(String command, Object options = {}) async;

呼び出しパラメータ:

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

返される結果:

  • (整数 pid、NArray 出力、バリアント stdout、バリアント stderr、整数ステータス、バリアント エラー)、子プロセスの実行結果を返します。

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

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // working directory of the child process, default to current directory "stdio": Array | String, // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

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": "", // working directory of the child process, default to current directory "stdio": Array | String, // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

子プロセスでモジュールを実行する

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": "", // working directory of the child process, default to current directory "stdio": Array | String, // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

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": "", // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

指定されたファイルを直接実行して 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": "", // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }