Linux C:open函数中oflag的补充

在本系列第一篇博文中利用重新打开文件的方式将光标移到开头,这也是在我们做文件写入的时候需要注意到内容。

当我们使用以下句子打开文件时,光标默认是在文件头的,这时如果进行写操作就会覆盖掉原来的文本内容:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
 
int main()
{
    int fd;
    fd = open("./file1", O_RDWR);
    write(fd, "Hello world.", strlen("Hello world."));
}

O_APPEND 每次写操作都写入文件的末尾

open函数的oflag的这个宏就可以起到将光标移到最后的功能。

int main()
{
    int fd;
    fd = open("./file1", O_RDWR|O_APPEND);
    write(fd, "Hello world.", strlen("Hello world."));
}

--------------------------------分割线-------------------------------- 

O_TRUNC 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即将其长度截短为0)

这个就宏比较可怕,可以直接把原来的文本全删了,重新写。

--------------------------------分割线-------------------------------- 

O_EXCL 如果要创建的文件已存在,则返回 -1,并且修改 errno 的值

使用O_EXCL这个宏可以通过返回值来判断open的文件是否存在。

 1  #include <sys/types.h>
 2  #include <sys/stat.h>
 3  #include <fcntl.h>
 4  #include <stdio.h>
 5
 6  int main()
 7  {
 8     int fd;
 9
 10     fd = open("./file", O_RDWR|O_CREAT|O_EXCL, 0600);
 11     if(fd == -1)
 12     {
 13         printf("fail exist\n");
 14     }
 15
 16     return 0;
 17 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值