【发布时间】:2018-09-29 01:26:14
【问题描述】:
我正在运行一个执行一些 GPIO 工作的 Node.js 应用程序。如果发生任何类型的错误或用户使用CTRL + C 关闭应用程序,我目前正在处理它。但我无法捕捉到的一种情况是,当我通过关闭 SSH 客户端断开 SSH 会话时。
关闭我的 SSH 客户端会杀死 Node.js 应用程序(这很好),但在关闭之前需要执行某些 GPIO 清理方法。
这些是我尝试过的事件,当 SSH 关闭时它们都没有捕获:
var cleanup = () => { /*cleanup code*/ };
var domain = require('domain').create();
domain.on('error', cleanup);
process.on('uncaughtException', cleanup);
process.on('SIGINT', cleanup);
process.on('SIGTERM', cleanup);
process.on('exit', cleanup);
process.on('unhandledRejection', cleanup);
process.on('disconnect', cleanup);
process.on('SIGUSR1', cleanup);
process.on('SIGUSR2', cleanup);
process.on('beforeExit', cleanup);
当应用程序由于 SSH 会话终止而关闭时会发出什么事件?
【问题讨论】:
-
通常是 SIGHUP,您是否尝试监听该信号?
-
@mscdex 感谢您的回复,不幸的是,这似乎并没有改变任何事情:(您确实将我带到了nodejs.org/api/process.html#process_signal_events,我将阅读其中的一些内容并添加更多内容进行测试和看看它们是否也能工作。
标签: node.js events ssh gpio interrupt-handling