Linux文件管理
系统调用(API):操作系统提供给用户的一组特殊接口,用户可用API来获得操作系统的服务。
系通调用 内核
程序运行空间 内核空间
用户空间
linux一点哲学:一切皆文件
linux文件:普通文件、目录文件、链接文件、设备文件
文件:系统资源的一个抽象,对系统资源进行访问的一个通用接口
用文件的好处:简化系统编程接口的设计
文件描述符(fb) 1.非负整数
2.可表示各种类型打开的文件
3.使用可指定所操作的文件
使用fb先会产生三个文件 标准输入 0 键盘
标准输出 1 显示器 有缓冲
标准错误 2 显示器 无缓冲
用文件时要调用三个头文件 #include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
打开open
int open ( const char * pathname , int flags , mode_t mode);
例:int fb; fb = opne (“ a.txt “, O_CREAT | O_RDWR ,0755
要打开或创建的文件的名字 创建时权限
打开权限:
O_CREAT 打开的文件若不存在就创建
O_RDONLY 只读
O_WRONLY 只写
O_RDWR 可读写
系统调用—读 int read( int fd ,const void *buf ,size_t length)
从文件中读到缓冲区,返回读入的个数
系统调用—写 int write( int fd ,const void *buf ,size_t length)
把缓冲区的写入文件,返回写的个数
系统调用—定位 int lseek(int fd, 偏移量, 起始位置)
例:int (int fd , 0 ,SEEK_SET)
SEEK_SET 开头
SEEK_CUR 当前
SEEK_END 尾
close(fd) 关闭文件
库函数:标准I/O函数实际上是对底层系统的封装
不用文件描述符,使用文件指针 指向FILE型
FILE * fp
每个进程启动后打开三个流
stdin
stdout
stderr
库函数—打开:FILE * fopen(const char * filename, const char *mode)
文件名 打开模式
“r” 只读,文件必须已存在
“w” 只写,文件不存在则创建,存在则清空再写入
“a” 在文件末尾追加数据
“r+”允许读和写,文件必须已存在
“w+”允许读和写,不存在则创建,存在则清空再写入
“a+” 允许读和追加数据,文件不存在则创建
文件的作用仅仅是保存
库函数—写和读
fwrite ( void * buf,size ,int n , FILE * stream)
fread ( void * buf,size ,int n , FILE * stream)
库函数—定位
fseek(fp ,偏移量 ,起始位置)
操作字符
fgetc、fputc、fprintf、fscanf: 操作流级的
例子: ch = fgetc( stdin );
fputc( ch , stout);
fprintf(stout ,”input a string:\n”);
fscanf(stdin,” %s” ,buf_r);
puts(char *) gets(char * )
fputs(char * ,FILE *) fgets(char *,size ,FILE *)
fputs、fgets 操作字符串
printf 格式保存