簡體   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