#include<stdio.h>
#include<unistd.h>
#include<signal.h>
#include<stdlib.h>
int flag = 0;
void sig_int(int signum)
...{
if (flag == 1)
fprintf(stderr, "[47;31mhello world[5m");
fprintf(stderr,"[;[0m");
fprintf(stderr,"[;[0m");
printf("");
exit(0);
}
int main()
...{
int i = 0;
struct sigaction sig_act;
sig_act.sa_handler = sig_int;
sigemptyset(&sig_act.sa_mask);
sig_act.sa_flags = 0;
if (sigaction(SIGINT, &sig_act, NULL) < 0)
...{
fprintf(stderr, "signal error ");
exit(1);
}
while (i++ < 10)
...{
fprintf(stderr, "[;[s"); /**//*使用stderr是因为其是不带缓存的*/
fprintf(stderr, "[47;31mhello world[5m");
flag = 0;
sleep(1);
fprintf(stderr, "[;[u");
fprintf(stderr, "[;[K");
flag = 1;
sleep(1);
}
fprintf(stderr, "[47;31mhello world[5m");
fprintf(stderr,"[;[0m");
printf("");
return 0;
}
该程序实现输出十次hello world然后退出. 使用一个信号是为了还原默认的终端输出的颜色.
另外再讲讲如何输出颜色以及颜色的代码.
格式:
[Copy to clipboard] [ - ]CODE:
printf("\033[字背景颜色;字体颜色m字符串\033[0m" );
printf("\033[47;31mhello world\033[5m");
47是字背景颜色, 31是字体的颜色, hello world是字符串. 后面的\033[5m是控制码.
颜色代码: