如何用C语言编程控制+ C信号来暂停和取消输出?

时间:2016-08-06 18:51:39

标签: c signals

我是C语言编程的新手,也不太了解控制信号的知识。下面是我的程序,其中我尝试pauseunpause我的输出在while循环中运行。到目前为止,我可以通过按 CTRL + C Pause输出,但是按 CTRL + C 我需要再次unpause输出我不知道该怎么做。我的问题是如何通过按 CTRL + C 键再次Unpause我的输出。此外,我使用Spinlock暂停输出,直到再次按 CTRL + C ,这将恢复程序完成显示输出。该程序利用睡眠功能每秒输出到终端。任何建议都将受到高度赞赏。

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

void f(int); //handler

int main( int ac, char* av[] )
{

  if(ac == 1)
  {
    printf("No argument provided");
    exit(1);
  }
  int i = atoi(av[1]);
  printf("This is argument av: %i ", i);
  printf("\n");

  signal( SIGINT, f); // install the handler

  int k = 0;
  while(k != i)
  {
    printf("help \n");
    sleep(1);
    k++;
  }

  return 0;

}

void f(int signum)
{
  while(signum)
  {
    int lock =0;
    if(lock == 1)
      continue;
  }
}

1 个答案:

答案 0 :(得分:0)

有些unices会在通话后将信号处理重置为默认值,您必须重置它。

{{1}}