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