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.

Process: 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. La configuration de stdin à une propriété autre que ignore n'est pas prise en charge et entraînera une erreur. Par exemple, les valeurs supportées seront traitées comme suit:
      • pipe: equivalent à ['ignore', 'pipe', 'pipe']
      • ignore: équivalent à 'ignore', 'ignore', 'ignore']
      • inherit: equivalent to ['ignore', 'inherit', 'inherit'] (the default)
    • serviceName string (facultatif) - Nom du processus qui apparaîtra dans la propriété name de ProcessMetric retourné par app.getAppMetrics et child-process-gone événement 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.
    • respondToAuthRequestsFromMainProcess boolean (facultatif) - Avec ce drapeau, toutes les requêtes réseau HTTP 401 et 407 créées via le module net leur permettront de répondre via l'événement app#login dans le processus principal au lieu de l'événement login sur l'objet ClientRequest. La valeur par défaut est false.

Returns 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)

Send a message to the child process, optionally transferring ownership of zero or more MessagePortMain objects.

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. Jusqu'à ce que le processus fils ait été créé avec succès, la valeur est undefined. Lorsque le processus enfant se termine, la valeur est undefined après l'émission de l'événement exit.

const child = utilityProcess.fork(path.join(__dirname, 'test.js'))

console.log(child.pid) // undefined

child.on('spawn', () => {
console.log(child.pid) // Integer
})

child.on('exit', () => {
console.log(child.pid) // undefined
})

Remarque: Vous pouvez utiliser l' pid pour déterminer si le processus est en cours d'exécution.

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: 'error' Experimental

Retourne :

  • type string - Type d'erreur. Une des valeurs suivantes:
    • FatalError
  • location string - Emplacement de la source d'où provient l'erreur.
  • report string - Node.js diagnostic report.

Émis lorsque le processus fils doit se terminer en raison d'une erreur non continuable de V8.

Peu importe si vous écoutez l'événement error , l'événement exit sera émis après la fin du processus fils .

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

Emitted when the child process sends a message using process.parentPort.postMessage().