![在 sublime 中如何再次构建时自动中止上一次构建](https://linux22.com/image/1462623/%E5%9C%A8%20sublime%20%E4%B8%AD%E5%A6%82%E4%BD%95%E5%86%8D%E6%AC%A1%E6%9E%84%E5%BB%BA%E6%97%B6%E8%87%AA%E5%8A%A8%E4%B8%AD%E6%AD%A2%E4%B8%8A%E4%B8%80%E6%AC%A1%E6%9E%84%E5%BB%BA.png)
我知道有取消构建的键映射。但我希望当我按下 Ctrl+B 时,它会自动中止之前的构建。
是否可以?
“取消”构建是否有可能做一些工作。而不仅仅是终止程序(例如,发送终止信号,让 NodeJS 程序有时间关闭所有套接字...)
例如:
http.createServer().listen(80)
第一次按下 Ctrl+B 时,它可以工作,但第二次按下时,我总是得到无法绑定到端口 80...
答案1
让你的应用程序写入一个 pid 文件。
在生成服务的构建脚本中写入您自己的 pid。或者由服务本身编写,Apache 和 NGinx 等应该在某处编写自己的 pid。如果这是您的应用程序,您可能需要考虑编写自己的 pid 文件。据我所知,通常的位置是
/var/run
系统进程,启动 web 服务可能符合条件,或者~/.appname
,这是您主目录中以您的应用程序命名的隐藏文件。在WindowsNT环境中获取你的 pid 可能比较棘手, 和通过 pid 终止进程⇗也可能很棘手。
- 在构建时,在生成应用程序之前,通过 pidfile 中指定的 id 终止先前的构建进程。
原型代码:
详细并评论:https://gist.github.com/thorsummoner/f1fc7acf94cf9696ef75
我无法再将它简化了,它有大约 70 行面向函数的代码,需要修改才能用于特定用途。
它也没有经过测试,因为我没有特别好的用例。