我的UNIX编程学习笔记——creat函数

creat函数

creat函数说明

         creat函数用于创建 一个文件并以只写的方式打开。如果同名文件已经存在,那么文件长度将会被截短为0。                   (注:文中同名文件指的是路径和文件都相同)

creat函数的原型:

         int creat(const char* pathname, mode_t mode);

         若函数执行成功返回打开文件的描述符(注意文件是以只写的方式打开),失败返回-1并设置errno的值。

creat函数的论述

         creat函数使用不够灵活,确切的说很多情况不能满足我们的需求,首先因为这个函数在创建成功目标文件之后只能以只写的方式打开。这样多少会对一些程序员期望的操作带来一些不便,程序员可能会选择先关闭文件之后再用open函数打开。而且如果同名文件已经存在,那么文件长度将会被截短为0。但是我们不总是希望这样去做,可能原有的这个文件是有用处的。

         所以通常选择open函数来替代creat函数,用open函数创建文件相对使用creat函数有以下的几个优势:

1、  可以指定不同的打开文件方式,有时我们希望创建文件后并直接以读写方式打开,那么我们可以在open函数中指定O_RDWR,当然如果仍然希望以只写的方式打开可以指定O_WRONLY。

2、  可以同时指定O_EXCL参数,这样在创建文件的同时就会进行检查,若同名文件存在那么open函数将返回出错。这样可以有效的避免误操作和原有文件被截短的问题,如果程序员不能保证与创建的文件同名的文件希望被丢弃的话,那么就应该指定O_EXCL这个参数。

3、  使用open函数还可以指定一些与同步输入与输出相关的参数,这样可以适应更多的需求,比如我们希望之后对文件写的操作等待实际I/O的结束,那么就可以指定O_SYNC参数。

         我们可以通过上面几点看出使用open函数创建文件相对于使用creat函数的优势,因此相对open函数来说creat函数只需要适当的了解即可。实际编程中creat函数的使用已经是非常的罕见了,现在往往是在用open函数来创建一个文件。

使用open函数实现类似creat函数功能

         绝大多数的情况下使用open函数实现类似creat函数的功能是一个非常好的方式,下面给出一种利用open函数创建文件的函数调用方式:

         fd = open(pathname, O_RDWR | O_CREAT | O_EXCL, mode);

         使用这种调用方式打开文件的形式是读和写,检测到存在的同名文件会返回错误,否则会直接创建文件并以读写的方式打开,文件的访问权限由mode参数指定。这里没有指定O_TRUNC参数,因为此时只有同名文件不存在的时候才会创建这个文件,新创建的文件里面不会有其他的内容。下面的调用方式也非常的常见,这种方式可以理解为creat的读写打开文件的版本:

         fd = open(pathname, O_RDWR | O_CREAT | O_TRUNC, mode);

转载于:https://www.cnblogs.com/yangheyu/p/3162372.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值