今天想在Ubuntu上用open()实现检测文件是否存在,若存在就read()的功能,代码如下:

int fd=open(temp,O_RDONLY|O_CREAT|O_EXCL,S_IRWXU);if(-1==fd)return -2;ssize_t nbytesRead = read(fd, buffer, count);close(fd);

  结果失败了,错误为“Bad file descriptor”。原因在于O_CREAT和O_RDONLY的矛盾,create的新文件还没写又怎么读呢?create需要写权限。

  之所以想到用open()检测文件是否存在,因为在open()的参数描述中:

“O_EXCL 如果O_CREAT 也被设置,此指令会去检查文件是否存在。文件若不存在则建立该文件,否则将导致打开文件错误。此外,若O_CREAT与O_EXCL同时设置,并且欲打开的文件为符号连接,则会打开文件失败。”
  我同时指定了O_EXCL和O_CREAT,实际的结果是:open()确实返回了-1(失败),但同时也创建了文件。这不是我想要的效果。

  检测文件是否存在,我找到另一个函数替代:access(),只要包含<stdio.h>就可以了。

转载于:https://www.cnblogs.com/lq0729/archive/2011/10/18/2216340.html

Unix/Linux下的open函数(O_CREAT和O_EXCL)相关推荐

  1. Unix/Linux下文件基本操作[zt]

    Unix/Linux下文件基本操作 来源: ChinaUnix博客 日期: 2008.06.16 17:16 (共有0条评论) 我要评论 比较重要的设备文件有三个,它们是/dev/console./d ...

  2. linux c++ 程序运行时间,总结UNIX/LINUX下C++程序计时的方法

    前言 良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较.但要精确测量程序的运行时间并不容易,因为进程切换.中断.共享的多用户.网络流量.高速缓存访问及转移预测等因素都会对程序 ...

  3. 进程间通信管道进阶篇:linux下dup/dup2函数的用法

    由于利用管道实现进程间通信,是通过创建两个文件描述符,但是描述符的初始化是通过随机的,就是从可用的文件描述符中取出,并将可用的文件描述符与file对象相关联,如果我们需要将管道的两头与其他的流相关时, ...

  4. sleep头文件linux,Linux下的sleep函数 要用的话得包涵什么头文件啊?

    Linux下的sleep函数 要用的话得需要#include sleep把进程的运行状态改为睡眠,将其从系统可执行队列去掉,这样系统就不会调度到该进程,不会分配CPU时间片,同时根据该进程的睡眠时间, ...

  5. linux父进程中显示子进程pid,请教linux下c语言函数fork父进程打印子进程的PID

    请教linux下c语言函数fork父进程打印子进程的PID 关注:296  答案:2  信息版本:手机版 解决时间 2019-01-14 04:55 雨不眠的下 2019-01-13 12:23 用于 ...

  6. [转帖]关于Linux下的icotl函数

    关于Linux下的icotl函数 最近接触android开发,因为有时间所以就关注了下android的源码,在跟踪源码过程中到最后都会遇到icotl函数,虽然在Symbian中曾经遇到过RSocket ...

  7. Linux下的延时函数

    Linux下的延时函数 1.sleep函数 头文件:#include<unistd.h> 功能:执行挂起操作一段时间,以秒为单位 一般形式:unsigned sleep(unsigned ...

  8. linux下 远程桌面连接,Unix/Linux下通过远程桌面连接Windows OS

    不知Microsoft出于什么考虑,在Windows XP中只允许一个Session通过远程桌面连接,如果一台XP为管理工作站,只有它能够访问后端的SAN Switch或存储系统,那么多人将无法同时使 ...

  9. linux getline参数,Linux下的getline函数

    最近在做国嵌的mp3项目,在mp3主控程序中用到了这个函数,挺好使的,在这里记录一下.注意是linux下的,不是C++中的. 函数原型 ssize_t getline(char **lineptr, ...

最新文章

  1. pandas使用isin函数和all函数判断dataframe特定数列中是否包含指定列表中的全部内容
  2. PHP工程师面临的成长瓶颈
  3. elasticsearch-jdbc同步myslq数据到elasticsearch
  4. Html5 Canvas斗地主游戏
  5. 2021,我的输入输出
  6. python开源项目新手_10大Python开源项目推荐(Github平均star2135)
  7. MySQL中MVCC+行级锁的工作机制(源码佐证)
  8. Linux 能否拿下苹果 M1 阵地?
  9. 能韬光养晦,是因为面前有苏联顶着,苏联没了就不可能了
  10. CMOS 集成电路设计手册 (基础篇)--学习笔记 第二章
  11. PHP获取汉字的拼音(支持首字母和全拼)
  12. 机器学习之实现一元线性回归模型
  13. 学习笔记(109):R语言入门基础-text函数
  14. ecshop简化虚拟商品购买收货人信息【ECSHOP购物车不存在实体商品电话改为非必须以及隐藏掉】
  15. JAVA 环境安装包 JDK 64位 jdk-8u221-windows-x64.exe
  16. zt:寻找Nina Reiser的悬赏已增至2万5千美元
  17. 基于Andro平台的软件开发若干关键技术研究(笔记)
  18. Mysql You can‘t specify target table ‘表名‘ for update in FROM clause错误解决方案
  19. 收好这份武林秘籍,让你分库分表再无烦恼
  20. EAUML日拱一卒 用例包含关系

热门文章

  1. Android Canvas 绘制基本形状 Android自定义View(七)
  2. Mr.J--简单页面制作
  3. webpack之react开发前准备
  4. 《汇编语言》课程设计
  5. MySQL的NULL值
  6. 项目管理:项目经理要具备的技能
  7. [ES6] 细化ES6之 -- 迭代器与生成器
  8. css垂直水平居中的整理
  9. 入门机器学习(九)--应用机器学习的建议
  10. MATLAB半色调,基于改进协方差矩阵的半色调图像分类研究