今日课堂内容:超时检测 数据库
select函数
#include <myhead.h>
int main(int argc, const char *argv[])
{//1、定义检测容器fd_set readfds;//2、清空内容FD_ZERO(&readfds);//3、将文件描述符放入集合中FD_SET(0, &readfds);//4、定义超时时间变量struct timeval tv = {5, 0};while(1){tv.tv_sec = 5;tv.tv_usec = 0;int res = select(1, &readfds, NULL, NULL, &tv);if(res == -1){perror("select error");return -1;}else if(res == 0){printf("time out\n");return -1;}//判断if(FD_ISSET(0, &readfds)){int num = 0;scanf("%d", &num);printf("触发键盘输入:%d\n", num);}}return 0;
}
poll函数
#include <myhead.h>
int main(int argc, const char *argv[])
{//1、定义文件描述符集合struct pollfd pfd;pfd.fd = 0; //表示检测的是0号文件描述符pfd.events = POLLIN; //表示检测读事件//2、调用函数while(1){int res = poll(&pfd, 1, 5000);if(res == -1){perror("poll error");return -1;}else if(res == 0){printf("time out\n");return -1;}//判断if(pfd.revents == POLLIN){int num = 0;scanf("%d", &num);printf("触发键盘输入:%d\n", num);}}return 0;
}
通过信号完成时间的设置
#include <myhead.h>
//定义信号处理函数
void handler(int signo)
{if(signo == SIGALRM){printf("系统已经随机为您出一张牌\n");alarm(5);}
}int main(int argc, const char *argv[])
{char ch; //用户选择的牌//将SIGALRM信号捕获到自定义函数中if(signal(SIGALRM, handler) == SIG_ERR){perror("signal error");return -1;}while(1){alarm(5); //给出5秒考虑时间printf("请出牌>>>");scanf("%c", &ch);getchar();printf("您出的牌为:%c\n", ch);}return 0;
}
#include <myhead.h>
int main(int argc, const char *argv[])
{//1、创建或打开一个数据库sqlite3 *ppDb = NULL;if(sqlite3_open("my.db", &ppDb) != SQLITE_OK){printf("open error:%d, %s\n", sqlite3_errcode(ppDb),sqlite3_errmsg(ppDb));return -1;}printf("数据库已经打开\n");//2、关闭数据库sqlite3_close(ppDb);return 0;
}
今日课堂提问:
1.IO多路复用的原理?
答:定义一个文件描述符集合,阻塞等待集合中是否有事件产生,如果有事件产生,则执行对于的函数
2.实现IO多路复用可以使用哪些函数完成?
答:select、 poll、epoll
3.select和poll的区别?
答:select是检测不同的文件描述符集合,包括读、写、异常文件描述符集合;poll将检测的文件描述符放入一个文件描述符结构体数组中。
有关超时参数,select是地址传递而pol1是值传递;
select在检测文件描述符集合大小有限制,而poll没有
4.在UDP通信过程中,能否使用connect函数?为什么?有什么好处?
答:可以使用,可以跟指定的端点建立唯一的通道,在通信过程中,不受其他端点的影响
5.OSI7层网络体系结构有哪些?
答:物理、数据链路层、网络层、传输层、会话层、表示层、应用层
6.四层网络体系结构?
答:应用层、传输层、网络层、网络接口层
7.ARP、HTTP、TFTP、IP、UDP、TCP说出全程和所在层?
答:arp地址解析协议,网络接口层
http超文本传输协议,应用层
IP网际协议,网络层
udp用户数据报协议,传输层tcp传输控制协议,传输层
8.100.0.125.2对于的默认子网掩码是多少?
答:255.0.0.0
9.顺序表和链表的区别?
答:顺序表类似于数组,特点是逻辑上连续物理地址也连续;链表是逻辑上连续的数据元素,物理地址上不一定连续;顺序表存储数据有上限,链表没有
10.进程和线程的区别?
答:线程是进程的最小执行单元、进程之间用户空间是相互独立的、多个线程共享同一个进程的资源、