基于asp的医疗网站开发,微信网站与响应式网站,中国嘉兴门户网站,新手做哪类网站目录
一、基本概念
二、研究进程和被打开文件的关系
#xff08;一#xff09;w方式
#xff08;二#xff09;a方式
三、认识系统接口#xff0c;操作文件
#xff08;一#xff09;认识文件描述符
#xff08;二#xff09;举例
#xff08;三#xff09;…目录
一、基本概念
二、研究进程和被打开文件的关系
一w方式
二a方式
三、认识系统接口操作文件
一认识文件描述符
二举例
三理解文件 一、基本概念 1、所有对文件的操作 a、对内容操作b、对属性操作 2、内容是数据属性也是数据——存储文件必须既存储内容又存放数据 此处的文件默认就是在磁盘上的文件加载磁盘上的文件一定会涉及访问磁盘设备由操作系统来做 3、我们要访问一个文件的时候都是要把这个文件先打开 访问的本质进程要访问一个文件打开后本质是将文件加载到内存 4、一个进程可以打开多个文件吗多个进程可以打开多个文件吗 加载到内存被打开的文件可能会存在多个进程打开的文件 1 5、根据1和4操作系统在运行中可能打开很多个文件操作系统要不要管理打开的文件呢需要如何管理先描述后组织 6、文件按照是否被打开分成被打开的文件在内存没有被打开的文件在磁盘中 二、研究进程和被打开文件的关系
一w方式
w以写的方式打开如果文件不存在就创建它
#includestdio.h
int main()
{ FILE *fpfopen(log.txt,w); if(NULL fp) { perror(fopen); return 1; } const char*msg hello world\n; int cnt 10; while(cnt) { fputs(msg, fp); cnt--; } fclose(fp); return 0;
}
二a方式
a也是写入从文件结尾处开始写入不会清空文件是追加
#includestdio.h
int main()
{ FILE *fpfopen(log.txt,a); if(NULL fp) { perror(fopen); return 1; } const char *msg message.txt\n; fputs(msg,fp); return 0;
} 三、认识系统接口操作文件
man 2 open
NAMEopen, creat - open and possibly create a file or deviceSYNOPSIS#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);int creat(const char *pathname, mode_t mode);pathname 这是一个字符串指定要打开或创建的文件的路径名。它可以是文件的相对路径或绝对路径。 flags 这是一个整数参数表示打开文件的方式和行为。它可以是以下几个常见标志的组合 O_RDONLY只读方式打开文件。O_WRONLY只写方式打开文件。O_RDWR读写方式打开文件。O_CREAT如果文件不存在则创建文件。O_APPEND在文件末尾追加内容而不覆盖原有内容。O_TRUNC如果文件存在并且以写入方式打开那么清空文件内容。O_EXCL与O_CREAT一同使用时如果文件存在则返回错误。 mode 这是一个权限参数仅在使用O_CREAT标志时才需要提供。它定义了新创建文件的权限。通常使用八进制表示比如 0644 表示文件所有者具有读写权限其他用户只有读权限。 返回值返回一个文件描述符(fd)如果出现错误则返回-1
一认识文件描述符
#includestdio.h #define print1 1 //0001
#define print2 (11) //0010
#define print3 (12) //0100
#define print4 (13) //1000 void print(int flags)
{ if(flags print1) printf(hello 1\n); //检查 flags 中是否包含 print1 对应的标志位if(flags print2) printf(hello 2\n); if(flags print3) printf(hello 3\n); if(flags print4) printf(hello 4\n); else printf(None\n);
}
int main()
{ print(print1); //输出了 hello 1因为 print1 代表的标志位被设置 printf(------------\n); print(print1|print2);//输出了 hello 1 和 hello 2因为 print1 和 print2 的标志位都被设置 printf(------------\n); print(print1|print2 | print3); printf(------------\n); print(print3|print4); printf(------------\n); print(print4); return 0;
} 二举例
#include stdio.h
#include unistd.h//close的头文件
#include string.h//strlen的头文件
//下面三个是open的头文件
#include sys/types.h
#include sys/stat.h
#include fcntl.h int main()
{ umask(0);//更改掩码 int fd open(log.txt,O_WRONLY | O_CREAT | O_TRUNC, 0666); if(fd 0) { perror(open); return 1; } const char *msgaaaaa; write(fd,msg,strlen(msg)); close(fd); return 0;
} 三理解文件