NodeJS:不能杀死gulp进程的产卵

时间:2015-05-31 20:22:12

标签: node.js process spawn

我想在某些更改时重新启动gulp。通过将以下内容放在gulpfile

中,可以轻松完成
spawn('gulp', [], { stdio: 'inherit'});

但是,一旦gulp以这种方式重新启动,就不再通过终端使用 Ctrl + C 正确杀死该进程。如果我通过终端启动gulp,我可以捕获 Ctrl + C 信号,但是如果gulp是通过spawn启动的话{+ 1}} {1}}。我怎样才能捕获' SIGINT'为产卵?

1 个答案:

答案 0 :(得分:2)

好的,这里有可能遇到这个问题的人的全部故事。根据我一直在阅读的内容,无论何时你想从gulp中重新启动gulp,你只需使用:

spawn('gulp', [], { stdio: 'inherit'});
process.exit();

我没有在我的问题中提到process.exit(),因为我没想到它会影响 Ctrl + C 的使用。事实上,由于我的服务器是ExpressJS,每当我从内部重新启动gulp后使用 Ctrl + C 时,我会得到端口仍在使用中的错误({{1} })。显然,所有节点进程都没有被关闭。从代码中删除行Error: listen EADDRINUSE后,我就可以使用 Ctrl + C 并成功关闭所有进程。下面是与此问题相关的gulpfile和终端输出中的有用代码。

process.exit()