我是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;
}
}
答案 0 :(得分:0)
有些unices会在通话后将信号处理重置为默认值,您必须重置它。
{{1}}