特点:
简单
携带信息量少
用于某种特定的场景
信号状态:
产生
未决 —产生但未处理
抵达----传输到相关进程,并处理
信号集(位于pcb中不能直接操作):
阻塞信号集:放置的是要屏蔽的信号
未决信号集:没有被处理的信号
给某个进程发送信号, kill -l 可以查看sig
int kill(pid_t pid, int sig);
自己给自己发信号
int raise(int sig);
自己给自己发一个SIGABRT信号
void abort(void)
闹钟,当时间会发送一个SIGALRM给调用该函数的进程。
unsigned int alarm(unsigned int seconds);
例:1s电脑能数多少数
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
#include <stdlib.h>
int main()
{
int i = 0;
alarm(1);
while(1)printf("%d\n",i++);
return 0;
}
./a.out > file 从把输出数据重定向到file
time ./a.out 查看a.out执行时间
定时器:
实现周期性定时。
int setitimer(int which, const struct itimerval *new_value,
struct itimerval *old_value);
原因:
操作文件io会导致文件变慢。
定时器,周期性定时
**int setitimer(int which, const struct itimerval new_value, struct itimerval old_value);
whic: 定时方法。
new_value: 查看man文档定义
old_value: 通常设置为NULL。
未决信号集:
才刚产生的信号最开始是处于未决信号(在未决信号集中)。处理时会优先读取一下阻塞信号集,如果阻塞信号集中状态为1不处理,为0处理。(该信号未被处理依然放在未决信号集中)
自定义信号集:想操作阻塞那个信号就把他设置为1,不阻塞就设置为0.