LINUX系统编程_文件编程_打开/创建文件(open函数)

一,打开/创建文件(open函数)

1.open函数作用

open函数在Linux下一般用来打开或者创建一个文件,我们可以根据参数来定制我们需要的文件的属性和用户权限等各种参数。

2.open函数的定义和参数

open函数在Linux下的定义

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

返回值

成功:新打开的文件描述符
失败:-1

3.参数说明

pathname:要打开的文件名(含路径,缺省为当前路径)

flags:
O_RDONLY:只读模式
O_WRONLY:只写模式
O_RDWR:可读可写

当我们附带了权限后,打开的文件就只能按照这种权限来操作。
以上三个常数中应只指定一个。下列常数是可选择的:
O_CREAT 表示如果指定文件不存在,则创建这个文件。
O_EXCL 表示如果要创建的文件已存在,则出错,同时返回 -1,并且修改 errno 的值。
O_APPEND 表示追加,如果原来文件里面有内容,则这次写入会写在文件的最末尾。
O_TRUNC 表示截断,如果文件存在,并且以只写、读写方式打开,则将其长度截断为0。

mode:一定是在flag中使用了O_CREAT标``志,mode记录待创建的文件的访问权限

4.测试代码

测试代码:
1.当前路径存在file1文件夹

#include <sys/types.h>                                                                                 
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
int main()
{

        int fd; 
    

 fd= open("./file1",O_RDWR);//file1当前路径下创建的file1文件夹

 printf("fd=%d\n",fd);


return 0;
}

结果



结果

tianya@tianya-virtual-machine:~$ gcc demo1.c 
tianya@tianya-virtual-machine:~$ ./a.out 
fd=3

2.当前文件夹不存在文件夹file2

#include <sys/types.h>                                                                                 
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
int main()
{

        int fd; 
    

 fd= open("./file2",O_RDWR);

 printf("fd=%d\n",fd);


return 0;
}

执行结果

tianya@tianya-virtual-machine:~$ gcc demo2.c 
tianya@tianya-virtual-machine:~$ ./a.out 
fd=-1

3.文件不存在时,创建文件
int open(const char *pathname, int flags, mode_t mode);

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
int main()
{

        int fd; 
            

 fd= open("./file2",O_RDWR);
if(fd==-1){
    printf("open files failed\n");
   fd=open("./file2",O_RDWR|O_CREAT,0600);//O_CREAT 表示如果指定文件不存在,则创建这个文件。   0600表示权限
   if(fd>0)
   {   
      printf("create filed sucesse!\n");                                                               
   
   }   


}
return 0;
}

执行结果(创建了file2文件)
在这里插入图片描述
补充说明(file2文件的0600权限):
1.查看权限
命令行输入

ls -l

结果
在这里插入图片描述
r–表示可读(4)
w–表示可写(2)
x–执行(1)
r+w = 6
-rw--------- 0600

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值