- 设置发送信号的计时器---alarm()
alarm()设置当前进程的计时器到seconds秒后收到由内核发来的SIGALARM信号
- pause()挂起调用进程知道一个信号到达,如果调用进程被整个信号终止,pause()则不会返回。
- 三种计时器:
- ITIMER_REAL---真实计时器,记录进程的所有时间,包括用户态时间、内核态时间以及睡眠时间。信号量为SIGALARM。
- ITIMER_VIRTUAL---用户态时间计时器,仅仅记录进程的用户态时间。信号量为SIGVTALARM。
- ITIMER_PROF---实用计时器,记录进程的用户态时间+内核态时间。信号量为SIGPROF。
- 设置or获取间隔计时器---getitimer(),setitimer()
- 复杂的信号处理设置函数---sigaction()
struct sigaction { void (*sa_handler)(int); //SIG_DEF,SIG_IGN,或者函数 void (*sa_sigaction)(int, siginfo_t *, void *); //新的信号处理函数 sigset_t sa_mask; //当信号处理时需要被阻塞的其他信号集 int sa_flags; //信号处理机制 void (*sa_restorer)(void); };
-
阻塞信号有个两个地点,一个是信号处理者一级阻塞信号(用sigaction()),第二个是在进程一级阻塞信号(用sigprocmask())。sigprocmask()实际就是修改当前信号挡板的设置。
-
sigset_t是信号集类型,基本函数如下:
-
向指定进程发送指定信号---kill()
-
异步IO:Unix有2个异步输入系统。一种是当输入就绪时发送信号,另一种是系统当输入被读入时发送信号。UCB中通过设置文件描述块的O_ASYNC位来实现第一种,第二种是POSIX标准,调用aio_read。
Unix-Linux 编程实践教程 第七章 小结
猜你喜欢
转载自my.oschina.net/u/3281747/blog/2885307
今日推荐
周排行