个人做房产网站,网站建设一个人能做吗,北京营销推广网站建设,装潢设计培训班学费多少钱目录
从Linux系统的角度看待文件
系统文件I/O
open
write
read
文件操作的本质
vim中批量注释的方法 从Linux系统的角度看待文件
关于文件的共识#xff1a;
1.空文件也要占用磁盘空间
2.文件内容属性
3.文件操作包括文件内容/文件属性/文件内容属性
4.文件路径文…目录
从Linux系统的角度看待文件
系统文件I/O
open
write
read
文件操作的本质
vim中批量注释的方法 从Linux系统的角度看待文件
关于文件的共识
1.空文件也要占用磁盘空间
2.文件内容属性
3.文件操作包括文件内容/文件属性/文件内容属性
4.文件路径文件名具有唯一性
5.如果没有指明对应的文件路径默认是在当前路径下对文件进行访问
故文件操作的本质为进程和被打开文件的关系
文件权限0 666~umask默认文件掩码
系统文件I/O
open
#include sys/types.h
#include sys/stat.h
#include fcntl.hint open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);pathname: 要打开或创建的目标文件
flags: 打开文件时可以传入多个参数选项用下面的一个或者多个常量进行“或”运算构成flags。
参数:O_RDONLY: 只读打开O_WRONLY: 只写打开O_RDWR : 读写打开这三个常量必须指定一个且只能指定一个O_CREAT : 若文件不存在则创建它。需要使用mode选项来指明新文件的访问权限O_APPEND: 追加写
返回值成功新打开的文件描述符失败-1
write #include unistd.hssize_t write(int fd, const void *buf, size_t count); c语言字符串以\0为结尾与文件无关
//r w r(读写不存在则报错) w(读写不存在则创建)//FILE* fpfopen(FINE_NAME,);int fdopen(FINE_NAME,O_WRONLY|O_CREAT,0666);if(fd0){perror(open);return 1;}int cnt 5 ;char outBuffer[64];while (cnt){sprintf(outBuffer,%s:%d\n,test,cnt--);write(fd,outBuffer,strlen(outBuffer));//strlen 不能1 算上\0 会出现乱码}//printf(fd: %d\n,fd);close(fd); int fdopen(FINE_NAME,O_WRONLY|O_CREAT|O_TRUNC,0666); O_TRUNC对文件内容做清空 read
SYNOPSIS#include unistd.hssize_t read(int fd, void *buf, size_t count);
char buffer[1024];ssize_t num read(fd,buffer,sizeof(buffer)-1);if(num0) buffer[num]0;printf(%s,buffer); 文件操作的本质
文件操作的本质为进程和被打开文件的关系
进程可以打开多个文件- 系统中存在大量的被打开的文件
OS管理被打开文件的方式是为其创建对应的内核数据结构struct file标识文件
struct file:中包含了文件的大部分属性。
#define FINE_NAME(number) log.txt#number#的作用是为了将log.txt与number拼接起来
int fd1 open(FINE_NAME(1), O_WRONLY | O_CREAT | O_TRUNC, 0666);int fd2 open(FINE_NAME(2), O_WRONLY | O_CREAT | O_TRUNC, 0666);int fd3 open(FINE_NAME(3), O_WRONLY | O_CREAT | O_TRUNC, 0666);int fd4 open(FINE_NAME(4), O_WRONLY | O_CREAT | O_TRUNC, 0666);int fd5 open(FINE_NAME(5), O_WRONLY | O_CREAT | O_TRUNC, 0666);
printf(fd: %d\n, fd1);printf(fd: %d\n, fd2);printf(fd: %d\n, fd3);printf(fd: %d\n, fd4);printf(fd: %d\n, fd5);close(fd1);close(fd2);close(fd3);close(fd4);close(fd5); SYNOPSIS#include stdio.hextern FILE *stdin;extern FILE *stdout;extern FILE *stderr;
FILE* fp...;
FILE是一个结构体其中有一个字段是文件描述符。
文件描述符的本质就是数组下标。 vim中批量注释的方法
ctrlvjI//Esc
u取消
fgets:在读取完字符串后会给字符串添加\0
int main()
{//r w r(读写不存在则报错) w(读写不存在则创建)FILE* fpfopen(FINE_NAME,);return 0;
}
c语言中以w的形式打开文件c会自动清空其内部的内容。