#include <signal.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#define MAX_LEN 100
void input_handler(int num)
{
char data[MAX_LEN];
memset(data, ‘\0‘, sizeof(data));
int len;
len = read(STDIN_FILENO, &data, MAX_LEN);
printf("input available:%s\n", data);
}
int main()
{
int oflags;
//0 注册信号处理函数
signal(SIGIO, input_handler);
//1 从设备驱动发出的信号被本进程接收
fcntl(STDIN_FILENO, F_SETOWN, getpid());
//2 设为异步通知模式
oflags = fcntl(STDIN_FILENO, F_GETFL);
fcntl(STDIN_FILENO, F_SETFL, oflags | FASYNC);
for (;;) ;
}
相关文章
- 12-23并发、并行、同步、异步、全局解释锁GIL、同步锁Lock、死锁、递归锁、同步对象/条件、信号量、队列、生产者消费者、多进程模块、进程的调用、Process类、
- 12-23异步通知实验
- 12-23设备驱动中的异步通知与异步I/O
- 12-23异步通知fasync机制
- 12-235种网络IO模型:阻塞IO、非阻塞IO、异步IO、多路复用IO、信号驱动IO
- 12-235种网络IO模型:阻塞IO、非阻塞IO、异步IO、多路复用IO、信号驱动IO
- 12-23异步通知读取输入事件
- 12-23【死磕NIO】— 阻塞IO,非阻塞IO,IO复用,信号驱动IO,异步IO,这你真的分的清楚吗?
- 12-23用信号通知流程组中除自身之外的所有流程
- 12-23为什么时序分析不关心异步复位信号的起作用的沿 不关心CE的下降沿