文件编程
系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”的接口来提供操作系统内核提供的服务。
最外层:application
其次层:shell、library routines
其次层:system call
最内层:kernel
Linux 文件可分为:
1)普通文件。
2)目录文件
3)链接文件。
4)设备文件。
文件描述符(fd): 1) 非负整数(从0开始)
2)表示各种类型文件。
一个进程的启动:打开三个文件
1)标准输入(键盘)
2)标准输出(显示屏)
3)标准错误(显示屏、不走缓冲区)
系统调用文件——打开
Int open(const char * pathname, int flag, mode_t mode)
Pathname: 打开或创建文件。
Flags: 证明此函数 O_CREAT | O_RDWR.
Mode: 创建权限 0755
如: fd = open( “a.txt” O_CREAT | O_RDWR, 0755)
0755 分三组: 7:用户, 5:同组成员 5:其他成员
——文件关闭
Close(fd)
——文件读取:
Int read(int fd, const void * buf, size_t length)
功能:从文件描述符(fd)所指定的文件读length字节到buf的缓冲区。
——文件的写入:
功能:从文件描述符(fd)所选定的缓冲区写到文件描述符(fd)所指定的文件。
——定位:
Int lseek(文件指针, 位偏移, 起始点)
SEEK_SET:文件开头
SEEK_CUR:当前位置
SEEK_END:文件结尾
库函数
C库函数的文件是独立于具体的操作平台。
1)标准的I/O函数并不直接操作文件描述符,而是使用指针来 操作。
2)标准的I/O函数中,一个打开的文件称为流,流可以用于读(输入流),写(输出流)或读写(输入输出流)
每个进程启动时,都会打开三个流:
0)标准输入流(stdin); 1 )标准输出流(stdout)
2)标准错误流(stderr)
库函数的——创建和打开
FILE *fopen(char*filename, char * mode)
Filename: 打开文件名(包含路径,缺省为当前路径)
Mode: 打开模式 指定文件的打开方式(是读、写、?)
库函数——写
Fwrite(void * buf, size, n, FILE * stream)
功能:从缓冲区buf所指数组中把n个字段写到stream指向的文件中,每个字段长为size字节,返回实际读取的字段数。
文件只保存、不搜索、不处理