使用ctrl-c防止C程序被杀死

时间:2013-01-07 22:28:10

标签: c

  

可能重复:
  Catch Ctrl-C in C

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

2 个答案:

答案 0 :(得分:6)

当程序运行时按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如果你发现有些令人困惑的事情,请告诉我们。

答案 1 :(得分:3)

  

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

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

无论如何,你应该没事:

signal(SIGINT, SIG_IGN);

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