Module module de base

Module child_process

Module de gestion des processus enfants

Méthode de référence :

1 2
var child_process = require("child_process"); var child = child_process.spawn("ls");

Lors de la création d'un processus enfant, l'option options.stdio est utilisée pour configurer le pipeline établi entre le processus parent et le processus enfant. Par défaut, les stdin, stdout et stderr du processus fils seront redirigés versChildProcessLes flux stdin, stdout et stderr correspondants sur l'objet. Cela équivaut à définir options.stdio sur ['pipe','pipe','pipe'].

Pour plus de commodité, options.stdio peut être l'une des chaînes suivantes :

  • 'pipe' : équivalent à ['pipe','pipe','pipe'] (valeur par défaut).
  • 'ignore' : équivalent à ['ignore','ignore','ignore'].
  • 'inherit' : équivalent à ['inherit','inherit','inherit'] ou [0, 1, 2].
  • 'pty' : équivalent à ['pty','pty','pty']. Windows n'est pas pris en charge.

Sinon, la valeur de options.stdio doit être un tableau (où chaque index correspond à un descripteur de fichier dans le processus enfant). Les descripteurs de fichier 0, 1 et 2 correspondent respectivement à stdin, stdout et stderr. D'autres descripteurs de fichiers peuvent être désignés pour créer d'autres canaux entre le processus parent et le processus enfant. La valeur peut être l'une des suivantes :

  1. 'pipe' : crée un pipe entre le processus enfant et le processus parent. Le parent du canal est exposé au processus parent en tant qu'attribut stdio[fd] sur l'objet child_process. Les canaux créés pour les descripteurs de fichiers 0, 1 et 2 peuvent également être utilisés comme stdin, stdout et stderr, respectivement.
  2. 'ignore' : indiquez à fibjs d'ignorer le descripteur de fichier dans le processus enfant. Bien que fibjs ouvrira toujours les descripteurs de fichier 0, 1 et 2 pour ses processus générés, définir le descripteur de fichier sur « ignore » permet à fibjs d'ouvrir /dev/null et de l'attacher au descripteur de fichier du processus enfant.
  3. 'inherit' : passez la stdio correspondante vers ou depuis le processus parent. Dans les trois premières positions, cela équivaut àprocess.stdin, process.stdout avec process.stderr. Dans toute autre position, cela équivaut à « ignorer ».
  4. 'pty' : Le processus fils sera exécuté dans un terminal virtuel. Pour le moment, seuls stdin et stdout sont valides.
  5. Entier positif : La valeur entière sera interprétée comme le descripteur de fichier actuellement ouvert dans le processus parent. Il est partagé avec le processus enfant, similaire au partage<Stream> Le chemin de l'objet. Les sockets entrants ne sont pas pris en charge sous Windows.
  6. null ou undefined : utilisez la valeur par défaut. Pour les descripteurs de fichiers stdio 0, 1 et 2 (en d'autres termes, stdin, stdout et stderr), des canaux seront créés. Pour le descripteur de fichier 3 et supérieur, la valeur par défaut est « ignorer ».
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] });

Pour les utilisateurs qui utilisent nodejs en même temps, veuillez faire attention

  • fibjs le child_process.exec(command, args)même nom api nodejs fonctions similaires, mais sous Windows, n'exécute pas automatiquement la commande cmd.exe comme paramètre d'environnement d'exécution ;
  • Le child_process.[spawn|exec|execFile|run] de fibjs est une fonction de style async intégrée sync/callback :
    • Si le dernier paramètre n'est pas une fonction, il est synchrone
    • Si une fonction est passée en dernier paramètre, elle est asynchrone ;
  • Le résultat de retour de fibjs child_process.[exec|execFile] est un objet complètement différent de l'objet retourné par l'API nodejs du même nom
  • fibjs n'est child_process.runpas une API correspondante dans le nodejs

Fonction statique

spawn

Libérer un processus enfant avec la commande donnée

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

Paramètres d'appel :

  • command: String, spécifiez la commande à exécuter
  • args: Array, spécifiez la liste des paramètres de chaîne
  • options: Objet, spécifiez les paramètres de création

Résultat de retour :

Le contenu pris en charge par les options est le suivant :

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 }

Libérer un processus enfant avec la commande donnée

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

Paramètres d'appel :

  • command: String, spécifiez la commande à exécuter
  • options: Objet, spécifiez les paramètres de création

Résultat de retour :

Le contenu pris en charge par les options est le suivant :

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

Exécutez une commande dans le shell et tamponnez la sortie. Lorsqu'elle est exécutée en mode rappel, la fonction renvoie l'objet de processus enfant

1 2
static (Variant stdout, Variant stderr) child_process.exec(String command, Object options = {}) async;

Paramètres d'appel :

  • command: String, spécifiez la commande à exécuter
  • options: Objet, spécifiez les paramètres de création

Résultat de retour :

  • (Variant stdout, Variant stderr), renvoie le contenu de sortie stdio du processus enfant

Le contenu pris en charge par les options est le suivant :

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

Exécute directement le fichier spécifié et met en mémoire tampon la sortie. Lorsqu'elle est exécutée en mode rappel, la fonction renvoie l'objet de processus enfant

1 2 3
static (Variant stdout, Variant stderr) child_process.execFile(String command, Array args, Object options = {}) async;

Paramètres d'appel :

  • command: String, spécifiez la commande à exécuter
  • args: Array, spécifiez la liste des paramètres de chaîne
  • options: Objet, spécifiez les paramètres de création

Résultat de retour :

  • (Variant stdout, Variant stderr), renvoie le contenu de sortie stdio du processus enfant

Le contenu pris en charge par les options est le suivant :

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 }

Exécute directement le fichier spécifié et met en mémoire tampon la sortie. Lorsqu'elle est exécutée en mode rappel, la fonction renvoie l'objet de processus enfant

1 2
static (Variant stdout, Variant stderr) child_process.execFile(String command, Object options = {}) async;

Paramètres d'appel :

  • command: String, spécifiez la commande à exécuter
  • options: Objet, spécifiez les paramètres de création

Résultat de retour :

  • (Variant stdout, Variant stderr), renvoie le contenu de sortie stdio du processus enfant

Le contenu pris en charge par les options est le suivant :

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

Exécuter un module dans le processus fils

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

Paramètres d'appel :

  • module: String, spécifiez la commande à exécuter
  • args: Array, spécifiez la liste des paramètres de chaîne
  • options: Objet, spécifiez les paramètres de création

Résultat de retour :

Le contenu pris en charge par les options est le suivant :

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 }

Exécuter un module dans le processus fils

1 2
static ChildProcess child_process.fork(String module, Object options = {});

Paramètres d'appel :

  • module: String, spécifiez la commande à exécuter
  • options: Objet, spécifiez les paramètres de création

Résultat de retour :

Le contenu pris en charge par les options est le suivant :

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

Exécute directement le fichier spécifié et renvoie exitCode. Lorsqu'elle est exécutée en mode rappel, la fonction renvoie l'objet de processus enfant

1 2 3
static Integer child_process.run(String command, Array args, Object options = {}) async;

Paramètres d'appel :

  • command: String, spécifiez la commande à exécuter
  • args: Array, spécifiez la liste des paramètres de chaîne
  • options: Objet, spécifiez les paramètres de création

Résultat de retour :

  • Integer, Renvoie le exitCode du processus fils

Le contenu pris en charge par les options est le suivant :

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 }

Exécute directement le fichier spécifié et renvoie exitCode. Lorsqu'elle est exécutée en mode rappel, la fonction renvoie l'objet de processus enfant

1 2
static Integer child_process.run(String command, Object options = {}) async;

Paramètres d'appel :

  • command: String, spécifiez la commande à exécuter
  • options: Objet, spécifiez les paramètres de création

Résultat de retour :

  • Integer, Renvoie le exitCode du processus fils

Le contenu pris en charge par les options est le suivant :

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 }