首先明确一点,Linux系统中,权限是非常重要的。

在很多Linux创建类型的函数中,一般都有两组类型的参数列表,类似于open函数;或者说,它们和open函数的使用方式一致:

#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);

pathname是文件路径,这点毫无疑问。flags表示打开的方式,必须至少包括下面三个其中之一:O_RDONLY O_WRONLY O_RDWR,分别是只读、只写、读写。其他的参数参照http://man7.org/linux/man-pages/man2/open.2.html。

在这里指明两个特殊参数:如果是第一次创建,则必须使用O_CREAT,而且第一次创建的时候,mode参数是必须的!!!!!此时mode参数表示对文件的操作权限,具体参数看文档。

在使用O_CREATE函数的时候,如果指定O_EXCL参数,则如果文件存在,则会把errno设置为EEXIST,这一点常用作判断文件是否存在。下面给出一个代码实例,用于说明更一般的使用方式:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <cstdio>
#include <cstdlib>
#include <unistd.h>
#include <cstring>#define PATH "/tmp/test.txt"
#define FLAG0 O_CREAT|O_WRONLY|O_EXCL
#define FLAG1 O_CREAT|O_WRONLY
#define MODE S_IWUSR|S_IRWXG|S_IRWXOint main() {int fd;// 这里先进行打开测试,第一次创建给与权限if ((open(PATH, FLAG0, MODE)) < 0 && errno != EEXIST) {perror("open error\n");exit(EXIT_FAILURE);}// 这里是真正的打开文件if ((fd = open(PATH, FLAG1)) < 0) {perror("open error");exit(EXIT_FAILURE);}const char *str = "hello world!";if (write(fd, str, strlen(str)) < 0) {perror("write() error");exit(EXIT_FAILURE);}close(fd);exit(EXIT_SUCCESS);
}

Linux打开文件操作的注意事项相关推荐

  1. Linux的文件操作

    1. 文件操作系统的调用 Linux的文件操作系统调用(在Windows编程领域,操作系统提供的接口称为 API)涉及创建(create).打开(open).读写(read/write)和关闭(clo ...

  2. Linux内核文件操作

    Linux内核文件操作 前言 一.文件操作结构体 二.VFS之file_operations对象 1.文件打开filp_open 2.文件关闭filp_close 3.文件读取vfs_read 4.文 ...

  3. linux拷贝文件函数,linux下文件操作的各个函数

    作者:HoytEmail:hoytluo@21cn.com 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 --------- ...

  4. linux修改目录block信息,linux下文件操作inode,block的变化

    在"浅谈linux性能调优之三:分区格式化之前的考虑" http://my.oschina.net/sharelinux/blog/143522    一文中我说了inode与bl ...

  5. day24.open 打开文件操作

    第24节:open 打开文件操作 驱动设备的节点 ls /dev/leds 编写运行编译open例程 1)首先看一下帮助文档内容 topeet@ubuntu:~$ man 2 open 2)open. ...

  6. 服务器LINUX查看文件操作

    LINUX查看文件操作 步骤命令如下: grep # 显示 key 所在行及前后5行grep -5 'key' filegrep -C 5 'key' file # 显示 key 所在行及前5行gre ...

  7. Linux打开文件报错E325解决方法

    提示:记得点赞加关注哦! 目录 问题描述 原因分析: 解决方案: 问题描述 提示:这里描述linux中遇到的问题: 例如:Linux打开文件报错E325解决方法 E325: ATTENTION Fou ...

  8. linux中浏览文件内容的命令有哪些,linux打开文件命令有哪些

    linux打开文件的命令有:1.cat命令,用于查看文件内容:2.tac命令,从最后一行开始显示:3.nl命令,在显示的时候输出行号:4.more命令,用于一页一页的显示文件内容等. 打开终端程序后直 ...

  9. python打开文件注意事项_Python 中关于文件操作的注意事项

    文件操作 #打开文件 f = open('要打开的文件路径',mode = 'r/w/a', encoding = '文件原来写入时的编码') #操作 data = f.read() #读取 f.wr ...

最新文章

  1. Virtex-6中的BRAM(Block RAM)模块、DSP 模块XtremeDSP
  2. ASP.NET在IE10中Form表单身份验证失效问题解决方法
  3. 技术解析系列 | PouchContainer 支持 LXCFS 实现高可靠容器隔离
  4. 【Tools】Visual Studio 2019下载和安装
  5. Html5 Video 节点
  6. php创建无限级树型菜单以及三级联动菜单
  7. [Python爬虫] 之二十七:Selenium +phantomjs 利用 pyquery抓取今日头条视频
  8. C#参考:Linq 概述
  9. 英尺英寸和厘米的换算_英寸和厘米的换算
  10. docker 启动时错误docker: Cannot connect to the Docker daemon
  11. 浏览器兼容性及调试插件
  12. 阿里达摩院做AI这两年
  13. 同时分析多个中通快递单号物流的最后站点和派件员
  14. 远程操作安卓手机——所见即所控
  15. Alpha、Beta、RC、GA版本的区别
  16. 华为领衔,“5G+摄像头”拿下双影帝,多家国产手机凭借拍照入围MWC最佳演员...
  17. 手写springboot自动装配 autoConfiguration
  18. 离散模型——多属性决策
  19. 2022春招前端实习面经【美团、钉钉、快手、字节、招行、百度、拼多多、腾讯】(未完)
  20. 史上最小白之Bert详解

热门文章

  1. 2018年第九届蓝桥杯【C++省赛B组】【第六题:递增三元组】——二分解法
  2. Java实验9 T6.将对象和数组存储在dat文件中
  3. P1059 明明的随机数(C/C++)
  4. Python中文件操作和文件夹操作的学习笔记
  5. django和mysql
  6. 如何正确的使用WinRAR,去除错误弹框
  7. javax.mail.MessagingException: 553 authentication is required
  8. 三登堂入室-核心编程-01
  9. C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)...
  10. 如何用css实现类似简书的纵向导航/竖排导航