程序的功能是程序运行后进入无限循环,当用户按下中断键Ctrl+Z时,程序的自定义信号处理函数输出一幅图形,当用户按下中断键Ctrl+\时产生一批随机数,当用户按下中断键Ctrl+C时结束程序运行
时间: 2024-02-18 10:04:50 浏览: 37
好的,根据你的要求,以下是程序代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <time.h>
#include <unistd.h>
// 自定义信号处理函数1
void fun_ctrl_z(int sig) {
printf("\n");
printf(" +---+\n");
printf(" | |\n");
printf(" O |\n");
printf("/|\\ |\n");
printf("/ \\ |\n");
printf(" |\n");
printf("=========\n");
}
// 自定义信号处理函数2
void fun_ctrl_backslash(int sig) {
printf("\n");
printf("产生一批随机数:\n");
srand(time(NULL));
for (int i = 0; i < 10; i++) {
printf("%d ", rand() % 100);
}
printf("\n");
}
// 自定义信号处理函数3
void fun_ctrl_c(int sig) {
printf("\n收到 SIGINT 信号,程序即将结束。\n");
// 恢复系统对信号的默认处理方式
signal(SIGINT, SIG_DFL);
signal(SIGTSTP, SIG_DFL);
signal(SIGQUIT, SIG_DFL);
}
int main() {
// 注册信号处理函数
signal(SIGTSTP, fun_ctrl_z);
signal(SIGQUIT, fun_ctrl_backslash);
signal(SIGINT, fun_ctrl_c);
// 进入无限循环
while (1) {
printf("程序正在运行中...\n");
sleep(3);
}
return 0;
}
```
程序运行后会进入无限循环,每3秒输出一条语句。当用户按下中断键 `Ctrl+Z` 时,程序会执行自定义的信号处理函数 `fun_ctrl_z`,输出一幅图形;当用户按下中断键 `Ctrl+\` 时,程序会执行自定义的信号处理函数 `fun_ctrl_backslash`,产生一批随机数;当用户按下中断键 `Ctrl+C` 时,程序会执行自定义的信号处理函数 `fun_ctrl_c`,输出一条提示信息,并用 `signal` 函数恢复系统对信号的默认处理方式。这样程序就能正常结束了。