闹钟
alarm
函数原型:unsigned int alarm(unsigned intseconds);
功能:计时seconds秒,时间到达给当前进程发送SIGALRM信号。
注意:每个进程只有一个闹钟
返回值:
成功:上次闹钟剩余时间
alarm(0)表示取消闹钟
信号捕捉
注册信号捕捉函数,使进程接收到待捕捉的信号时不执行其默认处理动作而执行我们给他设置的函数
函数原型:
typedef void(*sighandler_t)(int);
sighandler_t signal(int signum,sighandler_thandler);
参数:
signum:待捕捉信号
handler:一个函数指针,指向捕捉函数的地址
int sigaction(int signum,cosnt structsigaction *act,struct sigaction *oldact);
参数:
signum:待捕捉信号的编号
act:结构体,主要有三个元素
sa_handler 信号捕捉函数的函数指针
sa_flags 信号捕捉的属性 0表示使用默认属性,默认会屏蔽自身信号
sa_mask 表示在执行信号捕捉函数期间生效阻塞信号集
使用sigaction捕捉闹钟信号
关于进程回收:
SIGCHLD:当子进程的状态发生变化时,会向子进程的父进程发送SIGCHLD信号SIGCHLD默认处理动作是忽略
最好的的子进程回收的方式是什么
wait阻塞回收
非阻塞忙轮询回收
最好的方式:当子进程结束的时候子进程能够通知父进程,父进程可以马上回收子进程
利用信号回收子进程
查看未决信号集的值