Linux下带颜色输出与闪烁功能(2)

#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, 
"hello world");
        fprintf(stderr,
"[;");
        fprintf(stderr,
"[;");
        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, 
"[;"); /**//*使用stderr是因为其是不带缓存的*/
                fprintf(stderr, 
"hello world");
                flag 
= 0;
                sleep(
1);
                fprintf(stderr, 
"[;");
                fprintf(stderr, 
"[;");
                flag 
= 1;
                sleep(
1);
        }


        fprintf(stderr, 
"hello world");
        fprintf(stderr,
"[;");
        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是控制码.
颜色代码:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24698.html