系统下的signal()函数和rand()函数实现。

以下是示例代码:

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

void signal_handler(int sig)
{
    switch(sig)
    {
        case SIGTSTP: // Ctrl+Z
            printf("\n");
            for(int i=0; i<5; i++)
            {
                for(int j=0; j<10; j++)
                {
                    printf("*");
                }
                printf("\n");
            }
            printf("\n");
            break;
        case SIGQUIT: // Ctrl+\
            printf("\n");
            for(int i=0; i<5; i++)
            {
                printf("%d ", rand()%100);
            }
            printf("\n");
            break;
        case SIGINT: // Ctrl+C
            printf("\nProgram terminated.\n");
            exit(0);
            break;
    }
}

int main()
{
    signal(SIGTSTP, signal_handler); // 注册Ctrl+Z的信号处理函数
    signal(SIGQUIT, signal_handler); // 注册Ctrl+\的信号处理函数
    signal(SIGINT, signal_handler); // 注册Ctrl+C的信号处理函数

    while(1)
    {
        printf("Press Ctrl+Z or Ctrl+\\ or Ctrl+C.\n");
        sleep(1);
    }

    return 0;
}

在终端运行程序后,按下Ctrl+Z可以显示如下图形:

**********
**********
**********
**********
**********

按下Ctrl+\可以显示一批随机数,例如:

45 34 67 19 54 

按下Ctrl+C可以结束程序运行

程序的功能是程序运行后进入无限循环当用户按下中断键Ctrl+Z时程序的自定义信号处理函数输出一幅由组成的图形当用户按下中断键Ctrl+时产生一批随机数当用户按下中断键Ctrl+C时结束程序运行。利用ubunt linux

原文地址: https://www.cveoy.top/t/topic/fTQf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录