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 queprocess.argv
dans 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
UtilityProcess
repré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])
message
anytransfer
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
})
[!NOTE] You can use the
pid
to 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 :
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()
.