IO分类
- 阻塞IO
- 非阻塞IO
- IO复用(select)
- 异步IO(信号驱动的IO)
IO类型
1、异步通知:一旦设备就绪,则主动通知应用程序。异步通知意味则设备通知自身可访问,实现了异步I/O.由内核向应用程序发信号,类似中断。
2、阻塞I/O意味着一直等待设备可访问后再访问。
3、非阻塞IO,设备不可访问,则马上返回。
4、轮询I/O,使用poll()查询设备是否可访问。
Linux 中最为常见信号的含义及其默认操作,详见Linux信号列表.pdf。
重点关注的信号:
- SIGIO 键盘输入或者当文件可读、写
- SIGINT 终端中断 ctrl+c
- SIGQUIT 终端退出 ctrl+\
信号实例一
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
/*自定义信号处理函数*/
void my_func(int sign_no)
{
if(sign_no==SIGINT)
printf("I have get SIGINT\n");
else if(sign_no==SIGQUIT)
printf("I have get SIGQUIT\n");
}
int main()
{
printf("Waiting for signal SIGINT or SIGQUIT \n ");
/*发出相应的信号,并跳转到信号处理函数处*/
signal(SIGINT, my_func);
signal(SIGQUIT, my_func);
while(1);
}