Aller au contenu principal

utilityProcess

utilityProcess crée un processus enfant avec Node.js et les Message ports activés. Il fournit l'équivalent de l'API child_process.fork de Node. s mais utilise plutôt API Services de Chromium pour lancer le processus fils.

Processus : Main

Méthodes

utilityProcess.fork(modulePath[, args][, options])

  • modulePath string - Chemin vers le script qui doit s'exécuter comme point d'entrée dans le processus fils.
  • args string[] (facultatif) - Liste des arguments dde type string qui seront disponibles en tant que process.argv dans le processus enfant.
  • options Object (facultatif)
    • env Object (facultatif) - Paires clé/valeur d'environnement. La valeur par défaut est process.env.
    • execArgv string[] (facultatif) - Liste des arguments passés à l'exécutable.
    • cwd string (facultatif) - Répertoire de travail courant du processus enfant.
    • stdio (string[] | string) (optionnel) - Permet de configurer le mode des stdout et stderr du processus enfant. La valeur par défaut est inherit. Les valeurs possibles sont pipe, ignore, inherit, pour plus de détails sur ces valeurs, vous pouvez vous référer à la documentation de stdio de Node.js. Actuellement, cette option ne prend en charge que la configuration de stdout et de stderr. Configuring stdin to any property other than ignore is not supported and will result in an error. Par exemple, les valeurs supportées seront traitées comme suit:
      • pipe: equivalent to ['ignore', 'pipe', 'pipe']
      • ignore: équivalent à 'ignore', 'ignore', 'ignore']
      • inherit: equivalent to ['ignore', 'inherit', 'inherit'] (the default)
    • serviceName string (optional) - Name of the process that will appear in name property of ProcessMetric returned by app.getAppMetrics and child-process-gone event of app. La valeur par défaut est Node Utility Process.
    • allowLoadingUnsignedLibraries booléen (facultatif) macOS - Avec cet indicateur, le processus utilitaire sera lancé via l’exécutable utilitaire Electron Helper (Plugin).app sur macOS, qui peut être co-conçu avec com.apple.security.cs.disable-library-validation et com.apple.security.cs.allow-unsigned-executable-memory. Cela permettra au processus utilitaire de charger les bibliothèques non signées. À moins que vous n'ayez expressément besoin de cette capacité, il est préférable de la laisser désactivée. Par défaut la valeur est false.

Retourne UtilityProcess

Class: UtilityProcess

Les instances de UtilityProcess représentent les processus enfants engendrés par Chromium avec intégration de Node.js.

UtilityProcess est un EventEmitter.

Méthodes d’instance

child.postMessage(message, [transfer])

  • message any
  • transfer MessagePortMain[] (facultatif)

Envoie un message au processus principal, en transférant éventuellement la détention d'objets MessagePortMain .

Par exemple :

// Main process
const { port1, port2 } = new MessageChannelMain()
const child = utilityProcess.fork(path.join(__dirname, 'test.js'))
child.postMessage({ message: 'hello' }, [port1])

// Child process
process.parentPort.once('message', (e) => {
const [port] = e.ports
// ...
})

child.kill()

Retourne boolean

Arrête le processus avec soin. Sur POSIX, il utilise SIGTERM mais veillera à ce que le processus soit récolté à la sortie. Cette fonction renvoie true si le kill est réussi, et false sinon.

Propriétés d'instance

child.pid

Integer | undefined représentant l’identifiant de processus (PID) du processus enfant. Si le processus enfant, en raison d'erreurs, ne parvient pas à être généré, la valeur sera undefined. Lorsque le processus enfant se termine, la valeur est undefined après l'émission de l'événement exit.

child.stdout

NodeJS.ReadableStream | null représente le résultat du processus enfant. Si l'enfant a été lancé avec options.stdio[1] défini à autre chose que 'pipe', alors ce sera null. Lorsque le processus enfant se termine, la valeur est null après l'émission de l'événement exit.

// Processus principal
const { port1, port2 } = new MessageChannelMain()
const child = utilityProcess.fork(path.join(__dirname, 'test.js'))
child.stdout.on('data', (data) => {
console.log(`Received chunk ${data}`)
})

child.stderr

Un NodeJS.ReadableStream | null qui représente le stderr du processus enfant. Si l'enfant a été lancé avec options.stdio[2] défini à autre chose que 'pipe', alors ce sera null. Lorsque le processus enfant se termine, la valeur est null après l'émission de l'événement exit.

Événements d’instance

Event: 'spawn'

Émis une fois que le processus fils a été créé avec succès.

Event: 'exit'

Retourne :

  • code number - Contient le code de sortie du processus obtenu à partir de waitpid sur Posix ou GetExitCodeProcess sur Windows.

Émis après la fin du processus enfant.

Événement : 'message'

Retourne :

  • message any

Émis lorsque le processus enfant envoie un message à l’aide de process.parentPort.postMessage()..