Module de base

module enfant_processus

Module de gestion des sous-processus

Citation:

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 canal établi entre le processus parent et le processus enfant. Par défaut, les fichiers stdin, stdout et stderr du processus enfant sont 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'] (par défaut).
  • 'ignorer' : équivalent à ['ignorer', 'ignorer', 'ignorer'].
  • 'hériter' : équivalent à ['hériter', 'hériter', 'hériter'] 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 fichiers 0, 1 et 2 correspondent respectivement à stdin, stdout et stderr. D'autres descripteurs de fichiers peuvent être spécifié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 canal entre le processus enfant et le processus parent. L'extrémité parent du canal est exposée 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 sont également disponibles respectivement sous les formats stdin, stdout et stderr.
  2. 'ignore' : demande à fibjs d'ignorer les descripteurs de fichiers dans les processus enfants. Bien que fibjs ouvre toujours les descripteurs de fichiers 0, 1 et 2 pour ses processus générés, définir le descripteur de fichier sur « ignorer » amène fibjs à ouvrir /dev/null et à l'ajouter au descripteur de fichier du processus enfant.
  3. 'inherit' : diffusez le stdio correspondant vers ou depuis le processus parent. Dans les trois premières positions, cela équivaut àprocess.stdin,process.stdoutetprocess.stderr. Dans toute autre position, équivalent à « ignorer ».
  4. 'pty' : Le processus enfant 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> Voie objet. Les sockets entrants ne sont pas pris en charge sous Windows.
  6. null ou non défini : utilisez la valeur par défaut. Des canaux sont créés pour les descripteurs de fichiers 0, 1 et 2 de stdio (en d'autres termes, stdin, stdout et stderr). Pour les descripteurs de fichiers 3 et supérieurs, 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'); // child process uses parent's stdio spawn('prg', [], { stdio: 'inherit' }); // child process uses parent's stderr spawn('prg', [], { stdio: ['pipe', 'pipe', process.stderr] });

Pour les utilisateurs qui utilisent également nodejs, veuillez noter que

  • La fonction de l'API de fibjs child_process.exec(command, args)du même nom est similaire à celle de nodejs, mais sous Windows, cmd.exe ne sera pas automatiquement utilisé comme environnement d'exécution du paramètre de commande ;
  • child_process.[spawn|exec|execFile|run] de fibjs est une fonction de style asynchrone qui intègre la synchronisation/rappel :
    • Si le dernier paramètre n'est pas une fonction, il est synchronisé
    • Si une fonction est passée en dernier paramètre, elle est asynchrone ;
  • Le résultat renvoyé par child_process.[exec|execFile] de fibjs est un objet complètement différent de l'objet renvoyé par l'API nodejs du même nom.
  • fibjs child_process.runn'a pas d'API correspondante dans nodejs

fonction statique

spawn

Publier 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écifie la commande à exécuter
  • args: Array, spécifie la liste des paramètres de chaîne
  • options: Objet, spécifiez les paramètres de création

Résultats de retour :

Les options prises en charge sont les suivantes :

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. }

Publier 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écifie la commande à exécuter
  • options: Objet, spécifiez les paramètres de création

Résultats de retour :

Les options prises en charge sont les suivantes :

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

Exécutez une commande dans le shell et mettez la sortie en mémoire tampon. Lorsqu'elle est exécutée en mode rappel, la fonction renverra 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écifie la commande à exécuter
  • options: Objet, spécifiez les paramètres de création

Résultats de retour :

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

Les options prises en charge sont les suivantes :

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

Exécutez directement le fichier spécifié et tamponnez la sortie. Lorsqu'elle est exécutée en mode rappel, la fonction renverra 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écifie la commande à exécuter
  • args: Array, spécifie la liste des paramètres de chaîne
  • options: Objet, spécifiez les paramètres de création

Résultats de retour :

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

Les options prises en charge sont les suivantes :

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. }

Exécutez directement le fichier spécifié et tamponnez la sortie. Lorsqu'elle est exécutée en mode rappel, la fonction renverra 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écifie la commande à exécuter
  • options: Objet, spécifiez les paramètres de création

Résultats de retour :

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

Les options prises en charge sont les suivantes :

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

Publier un processus enfant avec la commande donnée

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;

Paramètres d'appel :

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

Résultats de retour :

  • (pid entier, sortie NArray, sortie standard de variante, stderr de variante, statut entier, erreur de variante), renvoie le résultat de l'exécution du processus enfant

Les options prises en charge sont les suivantes :

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. }

Publier un processus enfant avec la commande donnée

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

Paramètres d'appel :

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

Résultats de retour :

  • (pid entier, sortie NArray, sortie standard de variante, stderr de variante, statut entier, erreur de variante), renvoie le résultat de l'exécution du processus enfant

Les options prises en charge sont les suivantes :

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

Exécuter un module dans un processus enfant

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

Paramètres d'appel :

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

Résultats de retour :

Les options prises en charge sont les suivantes :

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. }

Exécuter un module dans un processus enfant

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

Paramètres d'appel :

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

Résultats de retour :

Les options prises en charge sont les suivantes :

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

Exécutez directement le fichier spécifié et renvoyez le code de sortie. Lorsqu'elle est exécutée en mode rappel, la fonction renverra 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écifie la commande à exécuter
  • args: Array, spécifie la liste des paramètres de chaîne
  • options: Objet, spécifiez les paramètres de création

Résultats de retour :

  • Integer, renvoie le code de sortie du processus enfant

Les options prises en charge sont les suivantes :

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. }

Exécutez directement le fichier spécifié et renvoyez le code de sortie. Lorsqu'elle est exécutée en mode rappel, la fonction renverra l'objet de processus enfant.

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

Paramètres d'appel :

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

Résultats de retour :

  • Integer, renvoie le code de sortie du processus enfant

Les options prises en charge sont les suivantes :

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. }