Linux文件创建——open/creat函数,功能O_RDWR|O_CREAT|O_EXCL|O_APPEND|O_TRUNC

Linux文件创建——open/creat函数,功能O_RDWR|O_CREAT|O_EXCL|O_APPEND|O_TRUNC_第1张图片

O_CREAT 函数已经用过了,若不存在就新建一个文件
我们来看看 O_EXAL 函数吧(若文件存在,则返回-1
#include 
#include 
#include 
#include
#include
#include

int main()
{
        int fd;
        fd=open("./qqq.c",O_RDWR|O_CREAT|O_EXCL,0600);
        if(fd==-1)
        {
                printf("file exist!\n");
        }
        else
        {
                printf("creat file!\n");
        }
        close(fd);
        return 0;
}



Linux文件创建——open/creat函数,功能O_RDWR|O_CREAT|O_EXCL|O_APPEND|O_TRUNC_第2张图片
成功了!

接下来看看 O_APPEND 函数

我们现在qqq.c这个文件中随便写一些东西
Linux文件创建——open/creat函数,功能O_RDWR|O_CREAT|O_EXCL|O_APPEND|O_TRUNC_第3张图片

然后运行下面这个代码

#include 
#include 
#include 
#include
#include
#include
int main()
{
        int fd;
        char *buf="LLP IS MY WIEF!";
        fd=open("./qqq.c",O_RDWR);
        printf("fd=%d\n",fd);
        int n_write=write(fd,buf,strlen(buf));
        if(n_write!=-1)
        {
                printf("write %d byte to file\n",n_write);
        }

        close(fd);
        return 0;
}


再打开qqq.c这个文件

Linux文件创建——open/creat函数,功能O_RDWR|O_CREAT|O_EXCL|O_APPEND|O_TRUNC_第4张图片
会发现后面写的数据把之前的覆盖掉了。
然后我们加上O_APPEND

#include 
#include 
#include 
#include
#include
#include
int main()
{
        int fd;
        char *buf="LLP IS MY WIEF!";
        fd=open("./qqq.c",O_RDWR|O_APPEND);
        printf("fd=%d\n",fd);
        int n_write=write(fd,buf,strlen(buf));
        if(n_write!=-1)
        {
                printf("write %d byte to file\n",n_write);
        }

        close(fd);
        return 0;
}


Linux文件创建——open/creat函数,功能O_RDWR|O_CREAT|O_EXCL|O_APPEND|O_TRUNC_第5张图片
就没有覆盖,而是紧接着之前的数据写入

接下来我们看看 O_TRUNC 函数

如果之前文件里面有内容,先把内容清零,然后写入新的。
假如还是刚才那个文件qqq.c里面有内容了,接下来运行这个代码

#include 
#include 
#include 
#include
#include
#include
#include
int main()
{
        int fd;
        char *buf="FOREVER!";
        fd=open("./qqq.c",O_RDWR|O_TRUNC);
        printf("fd=%d\n",fd);
        int n_write=write(fd,buf,strlen(buf));
        if(n_write!=-1)
        {
                printf("write %d byte to file\n",n_write);
        }

        close(fd);
        return 0;
}


运行结果为:
Linux文件创建——open/creat函数,功能O_RDWR|O_CREAT|O_EXCL|O_APPEND|O_TRUNC_第6张图片

可见,之前的数据都没了

接下来还有一个create函数

#include 
#include 
#include 
#include
#include
#include
#include
int main()
{
        int fd;
        fd=creat("/home/CLC/QYY/file01",S_IRWXU);

        close(fd);
        return 0;
}

Linux文件创建——open/creat函数,功能O_RDWR|O_CREAT|O_EXCL|O_APPEND|O_TRUNC_第7张图片
create函数里面第一项是填需要创建文件的详细位置。

你可能感兴趣的:(嵌入式软件)