说明:都是基于对文件/文件内容的操作。
① O_CREAT:若文件不存在则创建文件,🔺使用此选项时,需要同时说明第三个参数mode,用其说明该新文件的存取许可权限。
🔺举例:在打开文件file1时,若文件不存在,就需要使用O_CREAT创建文件file1,在跟上文件访问权限mode。
fd = open("./file1",O_CREAT|O_RDWR,0600);
② O_EXCL: 如果同时指定了O_CREAT,而文件已经存在,则打开文件失败。
🔺举例:在O_CREAT后跟上O_EXCL,如果已经有file1文件,就提示文件存在;如果没有file1文件,什么也不显示,并创建新的文件。
fd = open("./file1",O_CREAT|O_RDWR|O_EXCL,0600);
if(fd == -1){
printf("file1 exist!\n");
}
③ O_APPEND: 添加新的文件内容到原有文件内容的后面。
🔺举例:事先在已创建的文件file1中写入12345678,O_CREAT后跟上O_APPEND后,结果就会在原文件内容12345678后换行跟上字符串“hello world!”
char *buf = "hello world!";
fd = open("./file1",O_RDWR|O_APPEND);
printf("open file1 success\nfd=%d\n",fd);
int n_write = write(fd,buf,strlen(buf));
printf("%d,%s\n",n_write,buf);
编译结果:
12345678
hello world!
④ O_TRUNC:打开文件时,如果文件中本来是有内容的,而且为只读或只写打开成功,则将其长度截短为0(如果有新写入的内容,就将原内容覆盖掉)。
🔺举例:已知上一个文件file1中的内容是12345678(换行)hello world!,在使用了O_TRUNC后,就将原文件内容长度截短为0(清除),并生成新文件内容test!(新文件内容毫无痕迹的覆盖原文件内容)
char *buf = "test!";
fd = open("./file1",O_RDWR|O_TRUNC);
printf("open file1 success\nfd=%d\n",fd);
int n_write = write(fd,buf,strlen(buf));
printf("%d,%s\n",n_write,buf);
编译结果:
test!