以下内容仅表示自己的学习笔记,对其中一些知识的见解,防止遗忘,不喜勿喷。错误之处,欢迎发邮箱指导:738254743@qq.com
阻塞:没有获得资源则进程挂起,直到获取资源为止。挂起进程进入睡眠状态,给调度的等待队列移走,直到等待条件满足。
非阻塞:操作设备部不挂起,或放弃,或反复查询。
非阻塞和阻塞区别:非阻塞:不断查询,消耗CPU;阻塞时进程进入休眠状态,将CPU资源让给其他资源
阻塞唤醒:1,唤醒休眠进程,最大可能在中断里,往往伴随中断
2,或者等待队列唤醒
关于struct和class区别:
1):默认继承访问权限:struct是public、class是private
2):struct作为数据结构的实现体,默认数据访问是publie,class对象实现体,默认数据访问是private
3):只有class能定义模板参数
1,Linux 中的文件主要分为 4 种:普通文件、目录文件、链接文件和设备文件。
2,所有对设备和文件的描述都使用文件描述符进行的。打开文件的时候向内核返回一个文件描述符。
3,文件IO:有缓冲:eg: fopen
标准IO:无缓冲:eg: open
4,定位:可以选择读取数据的大小和位置
lseek(int fd, off_offest, int whence):出错返回:-1
Offset:偏移量(单位字节,可正、可负)
Whence:SEEK_SET:当前位置 为开头
: SEEK_CUR:当前位置为文件指针位置
:SEEK_END: 文件结尾
5,文件锁:1,lockf():对文件施加建议锁
2,fcntl():对文件施加建议锁,也可以施加强制锁(用的最多)---->记录锁
6,串口通信:1,并行通信:传输距离短,速度快
2,串行通信:传输距离长,速度慢
UART操作主要:数据接收,数据发送,产生中断,设置Loopback模式,红外模式,硬软流控模式
标准IO
1,输出一个字符:fpuct()
2,打开文件,失败返回值NULL:fopen():打开文件路径和模式
Fdopen():打开文件描述符合模式
Freopen():打开文件、模式和特定IO流
3,关闭文件:fclose()
4,读IO:fread(void * ptr,size_t size,size_t nmemb,FILE * stream)
Ptr:缓存区,size:读取大小(每次读取大小),nmemb:读取记录数(总数),stream:要读取文件流
写IO:fwrite(constvoid * ptr,size_t size,size_t nmemb,FILE * stream)
5,字符输入输出:
1)读写一个字符---->输入getc(file *stream)
Fgetc(file *stream)Stream: 文件流
输出:putc(int c, file *stream)
Fpuct(int c, file *stream)
C:字符,stream:文件流
2)行输入:gets(char *s)
Fgets(char *s, int size, file *stream)
行输出:puts(const char *s)
Fputs(const char *s, file *stream)
失败返回:NULL
3)格式化输入输出:
输出:int printf(const char *format)
Int fprintf(file *fp, const char *format)
Int sprintf(char *buf, const char *format)
Format:输出格式,fp:文件描述符,buf:缓存区
失败返回:NULL
输入:int scanf(const char *format)
Int fscanf(file *fp, const char *format)
Int sscanf(file *fp, const char *format)
Format:输入格式,fp:文件描述符,buf:缓存区
失败返回:NULL
----------------------------------------------------写于2015年4月10号