目录
1、所有对文件的操作
2、内容是数据,属性也是数据——存储文件,必须既存储内容,又存放数据
3、我们要访问一个文件的时候,都是要把这个文件先打开
4、一个进程可以打开多个文件吗?多个进程可以打开多个文件吗?
5、根据1和4,操作系统在运行中,可能打开很多个文件,操作系统要不要管理打开的文件呢???需要,如何管理???先描述后组织
6、文件按照是否被打开,分成:被打开的文件(在内存),没有被打开的文件(在磁盘中)
- #include
- int main()
- {
- FILE *fp=fopen("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;
- }
- #include
- int main()
- {
- FILE *fp=fopen("log.txt","a");
- if(NULL == fp)
- {
- perror("fopen");
- return 1;
- }
-
- const char *msg = "message.txt\n";
- fputs(msg,fp);
- return 0;
- }
man 2 open
- NAME
- open, creat - open and possibly create a file or device
-
- SYNOPSIS
- #include
- #include
- #include
-
- int 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
- #include
-
- #define print1 1 //0001
- #define print2 (1<<1) //0010
- #define print3 (1<<2) //0100
- #define print4 (1<<3) //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
- #include
//close的头文件 - #include
//strlen的头文件 - //下面三个是open的头文件
- #include
- #include
- #include
-
- 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 *msg="aaaaa";
- write(fd,msg,strlen(msg));
- close(fd);
- return 0;
- }