【发布时间】:2016-08-06 18:51:39
【问题描述】:
我是 C 编程新手,对控制信号的了解也较少。下面是我的程序,我试图在其中 pause 和 unpause 我的输出在 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;
}
}
【问题讨论】:
-
我们不会为你做作业。
-
您不希望信号处理程序中出现循环。将
lock设为全局变量,在信号处理程序中切换它,在main代码中检查它。