dalla documentazione node.js:
Per impostazione predefinita, il genitore si aspetta per il bambino distaccato per uscire. Per impedire al genitore di attendere un determinato bambino, utilizzare il metodo child.unref() e il ciclo di eventi del genitore non includerà il figlio nel suo conteggio di riferimento.
Quando si utilizza l'opzione distaccata per avviare un processo di lunga durata, il processo non verrà eseguito in background a meno che non sia fornito con una configurazione di stdio non connessa al genitore. Se lo stdio del genitore è ereditato, il bambino rimarrà collegato al terminale di controllo.
è necessario modificare il codice simile a questo:
#!/usr/bin/node
var fs = require('fs');
var out = fs.openSync('./out.log', 'a');
var err = fs.openSync('./out.log', 'a');
var cp = require('child_process');
var MANFILE='ALengthyNodeManual.pdf';
var child = cp.spawn('gnome-open', [MANFILE], { detached: true, stdio: [ 'ignore', out, err ] });
child.unref();
fonte
2012-10-13 09:35:40
Grazie un mazzo! Funziona. –
È possibile impostare "ignore" per stdin, stdout, stderr: 'stdio: ['ignore'/* stdin * /, 'ignore'/* stdout * /, 'ignore'/* stderr * /]' –