index.js
const childProcess = require("child_process");
childProcess.spawn("python", ["main.py"]);
main.py
import time
while True:
time.sleep(1)
当使用 node index.js
运行 NodeJS 进程时,它会一直运行,因为它产生的 Python 子进程会一直运行。
当 NodeJS 进程通过命令提示符 x-ing 结束时,Python 进程也会结束,这是我们想要的,但是如何在 Python 代码退出之前运行一些清理代码?
之前的尝试
signal.signal(signal.SIGTERM, handler)
(以及与 signal.SIGINT
一起使用)。没有让处理程序运行(虽然,使用 Ctrl-C 结束 NodeJS 进程而不是关闭窗口确实让 SIGINT 处理程序运行,即使我没有明确地将输入从 NodeJS 进程转发到 Python 子进程)。 最后,虽然这个可重现的示例也有效且简单得多,但我的实际用例涉及 Electron,所以如果它引入了复杂性或解决方案,我想我会提到它。
Windows 10、NodeJS 12.7.0、Python 3.8.3