繁体   English   中英

防止Node.js应用程序退出

[英]Prevent a nodejs application from exiting

我有一个使用vorpal用nodejs编写的cli应用程序,它生活在freebsd(v9.3)中,我需要知道有什么方法可以防止用户退出该应用程序! 我希望它像启动应用程序一样,直到重新启动或关闭系统后,它才会退出。 这是非常关键的,我的意思是没有办法不惜一切代价退出该应用程序。 有可能吗?

编辑:这就是我想要的:当我的程序启动时,用户只能退出自己的退出命令才能退出程序,所以我想以某种方式阻止CTRL-Z,CTRL-C或其他类似的东西。 我可以处理SIGINT和错误,但是我的问题是“ CTRL-Z”触发了SIGSTOP信号,节点无法监听它。 如何完全禁用此CTRL-z和其他按钮? 还是在我的代码中甚至还有修改bsd的方法,还有其他解决方案吗?

我在freebsd论坛中找到了答案,在这里我想与您分享相同目的的人。

如该论坛中所述,我需要将程序包装在可以检测和忽略信号的C程序中。 所以这是这样的:

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>

int
main(int argc, char *argv[])
{
        /* Ignore signals from keyboard */
        signal(SIGINT, SIG_IGN);
        signal(SIGTSTP, SIG_IGN);
        signal(SIGQUIT, SIG_IGN);

    system("node path/to/your/program");
    /* Whatever needs to be done if this point is reached. */
    return (0);
}

有几种方法可以完成此操作,具体取决于您的要求:

1)使用外部工具在退出或崩溃时重新启动过程(例如Khauri McClain在评论中说)。 其中一些是(我最喜欢的是pm2):

2)您可以防止Node.js在错误时退出: 使node.js在错误时不退出 ,但是请不要这样做,此答案说明了原因: https : //stackoverflow.com/a/13049037/1206421 同样,您显然可以使用以下模块忽略Control-C按键: https : //www.npmjs.com/package/ctrl-c (我没有研究过),但这似乎也不是一个好主意。

无论如何,如果您正在使用的进程将被系统或其他用户kill -9 (例如,使用kill -9 ),则除了使用某些自动重启服务(如上所述)之外,您无能为力。 我建议您开始使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM