一、概述
课程目的:学习编写Linux应用程序(APP)
IO概念:I=input,O=output。例如,键盘、鼠标是输入设备,显示器是输出设备。USB、网络端口既是输入也是输出。
系统调用与库函数:系统调用是操作系统提供的接口函数,库函数是对系统调用的封装,提供程序的可移植性。例如,printf是库函数,调用系统调用在显示器上显示字符。
流概念:流是数据的流,在程序中是一个结构体。
缓冲区概念:缓冲区是为了减少IO操作次数而设置的内存区域。包括全缓冲、行缓冲等。
二、文件操作
文件打开与关闭:
- fopen函数:用于打开文件,返回文件流指针。
- fclose函数:用于关闭文件,刷新缓冲区内容并释放资源。
标准IO:
- 字符输入输出:fgetc、fputc等。
- 行输入输出:fgets、fputs等。
- 二进制读写:fread、fwrite等。
流的刷新与定位:
- fflush函数:刷新输出缓冲区内容。
- ftell、fseek、rewind函数:用于流定位。
格式化输入输出:fprintf、sprintf、fscanf、sscanf等。
三、文件IO
文件描述符:0、1、2分别表示标准输入、标准输出、标准错误。
打开关闭文件:
- open函数:用于打开文件,返回文件描述符。
- close函数:用于关闭文件。
文件读写与定位:
- read、write函数:用于文件读写。
- lseek函数:用于文件定位。
目录操作:
- opendir、readdir、closedir函数:用于打开、读取、关闭目录。
文件属性操作:
- chmod、fchmod函数:用于修改文件权限。
- stat、lstat、fstat函数:用于获取文件属性。
四、库文件
静态库:
-
创建静态库:编译源文件生成.o,使用ar命令创建静态库。
-
链接静态库:使用-L指定路径,-l指定库名。
动态库:
-
创建动态库:编译源文件时加-fPIC选项,使用gcc -shared命令生成动态库。
-
链接动态库:使用-L指定路径,-l指定库名。
-
运行时加载动态库:使用export指定动态库路径。