在Windows上的NodeJS中终止子进程

时间:2013-06-18 21:23:02

标签: flash node.js windows-7

我有以下代码,启动Flash

var flashExePath = "\"c:\\Program Files (x86)\\Adobe\\Adobe Flash CS6\\Flash.exe\"";

var sys = require('sys')
var exec = require('child_process').exec;
var flashProcess = exec(flashExePath);

... ... ...

function KillFlash()
{
    console.log("Terminating Flash...")
    if(flashProcess && flashProcess.exit)
    {
        flashProcess.exit(1);
        console.log("Flash process killed")
    }
}

... ... ...

process.on('SIGINT', function() {
    KillFlash();
    console.log('Exiting...');
    process.exit(1);
});

KillFlash函数应该终止Flash进程。当我点击control-c来停止Node时,' SIGINT'事件处理程序触发并且应该关闭Flash。相反,它说" Flash进程被杀死了#34;但Flash仍然是开放的。

我试过了:

flashProcess.kill()
flashProcess.kill('SIGINT')
flashProcess.kill('SIGTERM')
flashProcess.exit()
flashProcess.exit(1)

这些似乎都不起作用; NodeJS关闭但Flash仍然保持打开状态。

如何终止我的Flash流程?

1 个答案:

答案 0 :(得分:0)

我没有真正解决问题,但我想出了一个解决方法。

我在C#中编写了一个应用程序,其唯一目的是启动和监视Flash可执行文件。启动Flash后,它从我的Node脚本中侦听STDIN上的信号。要终止Flash和我的自定义启动器,我会将STDIN中的'quit'写入我的自定义启动器exe。工作就像一个魅力。