一、概述
Linux IO进程课程目的:学习编写linux应用程序(APP)
Linux文件的种类 :
常规文件
目录文件
字符文件
块文件
链接文件(相当于windows快捷方式)
1.IO的概念
I input 输入设备 比如键盘鼠标都是Input设备
O output 输出设备 比如显示器
优盘,网口,既是输入也是输出
2.系统调用和库函数
系统调用就是操作系统提供的接口函数。
如果我们把系统调用封装成库函数就可以起到隔离的作用,提供程序的可移植性。
Printf就是库函数然后调用了系统调用才在显示器上显示字符。
3.流的概念
FILE
标准IO用一个结构体类型来存放打开的文件的相关信息
标准I/O的所有操作都是围绕FILE来进行
FILE就是数据的流(stream),在程序中就是一个结构体。
文本流和二进制流
Windows 和linux的换行符区别
Windows是\r\n
Linux 是\n
4.缓冲区的概念
为了减少操作IO设备的次数,提高运行效率,在内存里面设置的缓冲区
全缓冲:当流的缓冲区无数据或无空间时才执行实际I/O操作
行缓冲:当在输入和输出中遇到换行符(‘\n’)时,进行I/O操作
当流和一个终端关联时,典型的行缓冲
无缓冲:数据直接写入文件,流不进行缓冲
5.三种标准IO :
标准输入流(键盘) | 0 | STDIN_FILENO | stdin |
标准输出流(显示器) | 1 | STDOUT_FILENO | stdout |
标准错误流 | 2 | STDERR_FILENO | stderr |
6.缓冲区概念演示:
Buffer.c 代码
#include <stdio.h>
#include <unistd.h>
int main(int argc,char*argv[]){
int i=0;
for(i=0;i<1025;i++){ //全缓冲
printf("a");
}
// printf("hello world\n"); // '\n'——行缓冲
while(1){
sleep(1);//休息1s
}
}
程序正常结束会刷新缓冲区。
Sleep函数:是释放cpu给其他应用程序使用的库函数。使用的头文件是#include <unistd.h>
查看头文件方法:man 2 函数 ,或者 man 3 函数