我正在使用 Electron、Python 和 Flask 在 Windows 中开发应用程序。
我用
require('child_process').spawn('python', [_script,port])
启动一个child_process,但我无法正确终止这个child_process。
当 Electron 应用程序关闭时,仍有一个名为“python”的进程在后台运行。
我几乎尝试了所有方法,例如 p.kill(),或使用 taskkill。
这是Python代码:
from flask import Flask
import logiccode as mine
app = Flask(__name__)
@app.route('/hello')
def hello_world():
return mine.HelloWorld()
if __name__ == '__main__':
app.run(debug = True)
//create
pyProc = require('child_process').spawn('python', [_script,port])
if (pyProc != null) {
console.log('child process success\n')
console.log(pyProc.pid);
}
//kill
if(process.platform=='win32'){
require('child_process').spawn('taskkill',['/pid','/f','/t',pyProc.pid]);
}else{
pyProc.kill();
pyProc = null
pyPort = null
}
如果代码中有错误,请告诉我如何正确杀死这个child_process。
最佳答案
我没有看到任何 Windows 特定分支的原因,我假设您在 pyProc.kill() 不起作用时添加了它。
kill
默认为 SIGTERM。我希望它能起作用,但如果你发现它不起作用,你可以使用 SIGKILL 的核选项来代替。正如 signal(7)
中所述:
The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
所以:
//kill
pyProc.kill('SIGKILL');
pyProc = null
pyPort = null
关于javascript - 如何在 Windows 中正确杀死由 Node.js/Electron 生成的 child_process?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57449252/