Main tengo dos archivos, uno es el archivo principal y otro es el archivo secundario. Probé en dos sistemas diferentes, un monasterio mac os y otro es dell - ubuntu 20. En ambos sistemas, obtengo las diferentes secuencias de salida (registro de la consola) como en las imágenes adjuntas a continuación.
aplicación.js:
var cp = require('child_process'); var child = cp.fork(__dirname + '/child.js'); child.on('message', function(m) { console.log('Parent process received:', m); }); child.send({ hello: 'from parent process' }); child.on('close', (code) => { console.log(`child process exited with code ${code}`); });niño.js
process.on('message', function(m) { console.log('Child process received:', m); }); process.send({ hello: 'from child process' });Mac OS Montery: salida:
Child process received: { hello: 'from parent process' } Parent process received: { hello: 'from child process' }Ubunt 20, salida:
Parent process received: { hello: 'from child process' } Child process received: { hello: 'from parent process' }Enlaces de salida:
Cuando bifurca un proceso, no hay garantías sobre el orden en que el padre y el hijo se ejecutarán a continuación. Incluso si ve un orden consistente en macOS y otro en Ubuntu, esto no está garantizado y no debe confiar en él. . Si necesita que las cosas sucedan en un cierto orden, entonces necesita estructurar su código de manera diferente para garantizarlo (por ejemplo, podría hacer que el niño no envíe el mensaje al padre hasta que esté en su propio controlador de mensajes recibidos).