【问题标题】:Prevent C program from getting killed with ctrl-c [duplicate]防止 C 程序被 ctrl-c 杀死 [重复]
【发布时间】:2013-01-07 22:28:10
【问题描述】:

可能重复:
Catch Ctrl-C in C

我正在编写一个 C 命令行程序并试图确保 ctrl-c 不会杀死它。关于如何做到这一点的任何想法?

【问题讨论】:

    标签: c


    【解决方案1】:

    当您在程序运行时按下 Ctrl-C 时,下面会发生的是您的进程收到一个名为 SIGINT 的信号,当进程收到此信号时的默认操作是终止自身。
    所以你的目标应该是修改这种行为:
    使用函数signal来捕捉ctrl-c时发送给你的进程的信号

    你应该这样做:

    signal(SIGINT, handler_function);//handler_function is a void returning function that takes one int paramter, you can do nothing there if you just want to prevent your process from terminating.
    


    P.S 这是man page 以获取更多信息:D
    P.P.S 如果您不熟悉信号是什么,请参考this wikipedia page,如果您发现那里有什么令人困惑的地方,请告诉我们。

    【讨论】:

      【解决方案2】:

      关于我如何做到这一点的任何想法

      使用 SIG_IGN 配置忽略 SIGINT 或在无操作处理程序中捕获它。在某些实现中,甚至还有一个 sigignore 函数。

      无论如何,你应该没问题:

      signal(SIGINT, SIG_IGN);
      

      SIG_IGN 是在 C11-7.14 中指定的,因此它具有最大的可移植性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-20
        • 1970-01-01
        • 2022-01-18
        • 2019-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-15
        相关资源
        最近更新 更多