面试题答案
一键面试- 关键函数调用:
signal
函数:用于设置信号处理函数。原型为void (*signal(int signum, void (*handler)(int)))(int);
,signum
是信号编号,handler
是信号处理函数指针。alarm
函数:用于设置一个定时器(闹钟),以秒为单位。原型为unsigned int alarm(unsigned int seconds);
。当定时器到期时,会向进程发送SIGALRM
信号。
- 简单代码示例:
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
// 信号处理函数
void signal_handler(int signum) {
printf("Received SIGALRM signal.\n");
}
int main() {
// 设置信号处理函数
signal(SIGALRM, signal_handler);
// 设置定时器,5秒后触发
alarm(5);
printf("Waiting for alarm to go off...\n");
// 防止程序退出
while(1);
return 0;
}
在上述代码中:
- 首先定义了
signal_handler
函数,它是SIGALRM
信号的处理函数。 - 在
main
函数中,使用signal
函数将SIGALRM
信号与signal_handler
函数关联起来。 - 然后使用
alarm
函数设置一个5秒的定时器。 - 最后通过一个无限循环
while(1)
防止程序退出,以便等待定时器触发信号。当5秒后,SIGALRM
信号被发送,signal_handler
函数被调用,输出相应信息。