utilityProcess
utilityProcess crea un proceso hijo con los puertos de Node.js y Message habilitados. Este proporciona un equivalente al API child_process.fork de Node.js, pero en su lugar usa el API Services de Chromium para lanzar el proceso hijo.
Proceso: principal
Métodos
utilityProcess.fork(modulePath[, args][, options])
- Cadena
modulePath- Ruta al script que debe ejecutarse como punto de entrada del proceso hijo. argsstring[] (opcional) - Listado de argumentos de cadena que deben estar disponibles comoprocess.argven el proceso hijo.
Returns UtilityProcess
utilityProcess.fork can only be called after the ready event has been emitted on App.
Clase: UtilityProcess
Las instancias de
UtilityProcessrepresentan el proceso hijo generado por Chromium con la integración de Node.js.
UtilityProcess is an EventEmitter.
Métodos de Instancia
child.postMessage(message, [transfer])
mensajecualquieratransferMessagePortMain[] (optional)
Send a message to the child process, optionally transferring ownership of zero or more MessagePortMain objects.
Por ejemplo:
// 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()
Devuelve boolean
Finaliza el proceso con gracia. On POSIX, it uses SIGTERM but will ensure the process is reaped on exit. This function returns true if the kill is successful, and false otherwise.
Propiedades de la instancia
child.pid
A Integer | undefined representing the process identifier (PID) of the child process. Until the child process has spawned successfully, the value is undefined. When the child process exits, then the value is undefined after the exit event is emitted.
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
A NodeJS.ReadableStream | null that represents the child process's stdout. If the child was spawned with options.stdio[1] set to anything other than 'pipe', then this will be null. When the child process exits, then the value is null after the exit event is emitted.
// Main process
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
A NodeJS.ReadableStream | null that represents the child process's stderr. If the child was spawned with options.stdio[2] set to anything other than 'pipe', then this will be null. When the child process exits, then the value is null after the exit event is emitted.
Eventos de Instancia
Event: 'spawn'
Emitted once the child process has spawned successfully.
Event: 'error' Experimental
Devuelve:
typestring - Type of error. Uno de los siguiente valores:FatalError
locationstring - Source location from where the error originated.reportstring -Node.js diagnostic report.
Emitted when the child process needs to terminate due to non continuable error from V8.
No matter if you listen to the error event, the exit event will be emitted after the child process terminates.
Event: 'exit'
Devuelve:
codenumber - Contains the exit code for the process obtained from waitpid on POSIX, or GetExitCodeProcess on Windows.
Emitted after the child process ends.
Evento: 'message'
Devuelve:
mensajecualquiera
Emitted when the child process sends a message using process.parentPort.postMessage().