【发布时间】:2015-02-11 06:31:19
【问题描述】:
我正在试验 Unix 中提供的信号。我目前关注的两个是 Ctrl+C 和 Ctrl+Z。我想捕捉信号,并在屏幕上显示一条消息。我得到了大部分工作。就像按下任一信号时显示的消息一样。然而,它似乎只工作一次。我希望每次按下 Ctrl+C 或 Ctrl+Z 时都显示消息。像一个循环。
#include <stdio.h>
#include <signal.h>
void handler (int signal);
int main ()
{
if (signal(SIGINT, handler) == SIG_ERR)
{
write (2, "Error catching signal C \n",26);
}
if (signal(SIGTSTP, handler) == SIG_ERR)
{
write(2, "Error catching signal Z \n", 26);
}
pause();
}
void handler (int signal)
{
if (signal == SIGINT)
{
write(1, "CONTROLC \n", 11);
}
else if (signal == SIGTSTP)
{
write(1, "CONTROLZ \n", 11);
}
else
{
write(2, "error \n", 8);
}
main();
}
我试图使用 main 函数,以便它会再次重新启动程序,但我假设它从信号中调用 main,所以它的行为不同?
【问题讨论】: