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])
modulePathstring - Chemin vers le script qui doit s'exécuter comme point d'entrée dans le processus fils.argsstring[] (facultatif) - Liste des arguments dde type string qui seront disponibles en tant queprocess.argvdans le processus enfant.
Returns UtilityProcess
utilityProcess.fork can only be called after the ready event has been emitted on App.
Class: UtilityProcess
Les instances de
UtilityProcessreprésentent les processus enfants engendrés par Chromium avec intégration de Node.js.
UtilityProcess is an EventEmitter.
Méthodes d’instance
child.postMessage(message, [transfer])
messageanytransferMessagePortMain[] (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
})
[!NOTE] You can use the
pidto determine if the process is currently running.
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 :
typestring - Type d'erreur. Une des valeurs suivantes:FatalError
locationstring - Emplacement de la source d'où provient l'erreur.reportstring -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 :
codenumber - 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 :
messageany
Emitted when the child process sends a message using process.parentPort.postMessage().