Je veux créer un cli RabbitMQ qui fonctionne comme Forever.js avec node. Il peut engendrer des child_process et les maintenir en cours d'exécution en arrière-plan et peut communiquer avec les child_process à tout moment. Le problème auquel je suis confronté est que lorsque le programme cli principal se termine, le child_process semble également s'arrêter, j'ai essayé de bifurquer avec detached:true et .unref() mais cela ne fonctionne pas. Comment puis-je exécuter un child process en arrière-plan même après la sortie du processus appelant parent ?
cli.js - parent
const { fork, spawn } = require('child_process');
const options = {
stdio: ['pipe', 'pipe', 'pipe', 'ipc'],
slient:true,
detached:true
};
child = fork('./rabbit.js', [], options)
child.on('message', message => {
console.log('message from child:', message);
child.send('Hi');
// exit parent
process.exit(0);
});
child.unref()
rabbit.js - child s'il est en cours d'exécution, 'i' devrait continuer à s'incrémenter
var i=0;
i++;
if (process.send) {
process.send("Bonjour"+i);
}
process.on('message', message => {
console.log('message from parent:', message);
});