2017-05-12 3 views
0

J'ai problème dans une application électronique et réduire le problème à une simple testspawn.js exécuter dans le nœud-je obtenir une mauvaise pid avec child_process.spawn

var spawn = require('child_process').spawn, 
exp = spawn('explorer', ['d:'],{detached:true}); //same thing detached or not 
console.log('Spawned child pid: ' + exp.pid); 

Quand je lance noeud testspawn.js un explorateur dans la D: le répertoire est affiché mais la console dit: Spawned child pid: 5880.

mais le Gestionnaire des tâches de Windows dire: enter image description here

Comme je veux à la fin de tuer l'explorateur quand je ne pas besoin plus, noway avoir le droit pid. Quelle est la chose qui me manque? . Complètement perdu ...

+0

Avez-vous essayé [ 'exp.kill()'] (https: //nodejs.org/api/child_process.html#child_process_child_kill_signal)? – robertklep

+0

Oui Premier essai que j'ai fait, en ajoutant le kill à la fin du test de mai, mais ce n'est pas correct. –

+0

Il y a quelque chose de spécial avec explorer.exe. J'ai trouvé une solution de contournement en utilisant une alternative, par exemple Explorer ++, dans ce cas le pid que j'obtiens est le bon et ainsi je peux tuer le processus quand j'en ai fini avec lui. Donc, il devrait y avoir le pid que je reçois dans le premier cas est le pid d'un explorateur de lancement de processus. Même si ce point reste encore un mystère pour moi, je ferme la question. –

Répondre

0

suite à mon dernier commentaire, je n'ai pas toutes les aswers mais mon cas a obtenu une solution de contournement ...