C语言open()函数:打开文件函数(转)
相关函数:read, write, fcntl, close, link, stat, umask, unlink, fopen
头文件:#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 以可读写方式打开文件. 上述三种旗标是互斥的, 也就是不可同时使用, 但可与下列的旗标利用OR(|)运算符组合.
O_CREAT 若欲打开的文件不存在则自动建立该文件.
O_EXCL 如果O_CREAT 也被设置, 此指令会去检查文件是否存在. 文件若不存在则建立该文件, 否则将导致打开文件错误. 此外, 若O_CREAT 与O_EXCL 同时设置, 并且欲打开的文件为符号连接, 则会打开文件失败.
O_NOCTTY 如果欲打开的文件为终端机设备时, 则不会将该终端机当成进程控制终端机.
O_TRUNC 若文件存在并且以可写的方式打开时, 此旗标会令文件长度清为0, 而原来存于该文件的资料也会消失.
O_APPEND 当读写文件时会从文件尾开始移动, 也就是所写入的数据会以附加的方式加入到文件后面.
O_NONBLOCK 以不可阻断的方式打开文件, 也就是无论有无数据读取或等待, 都会立即返回进程之中.
O_NDELAY 同O_NONBLOCK.
O_SYNC 以同步的方式打开文件.
O_NOFOLLOW 如果参数pathname 所指的文件为一符号连接, 则会令打开文件失败.
O_DIRECTORY 如果参数pathname 所指的文件并非为一目录, 则会令打开文件失败。注:此为Linux2. 2 以后特有的旗标, 以避免一些系统安全问题.
参数mode 则有下列数种组合, 只有在建立新文件时才会生效, 此外真正建文件时的权限会受到umask 值所影响, 因此该文件权限应该为 (mode-umaks).
S_IRWXU00700 权限, 代表该文件所有者具有可读、可写及可执行的权限.
S_IRUSR 或S_IREAD, 00400 权限, 代表该文件所有者具有可读取的权限.
S_IWUSR 或S_IWRITE, 00200 权限, 代表该文件所有者具有可写入的权限.
S_IXUSR 或S_IEXEC, 00100 权限, 代表该文件所有者具有可执行的权限.
S_IRWXG 00070 权限, 代表该文件用户组具有可读、可写及可执行的权限.
S_IRGRP 00040 权限, 代表该文件用户组具有可读的权限.
S_IWGRP 00020 权限, 代表该文件用户组具有可写入的权限.
S_IXGRP 00010 权限, 代表该文件用户组具有可执行的权限.
S_IRWXO 00007 权限, 代表其他用户具有可读、可写及可执行的权限.
S_IROTH 00004 权限, 代表其他用户具有可读的权限
S_IWOTH 00002 权限, 代表其他用户具有可写入的权限.
S_IXOTH 00001 权限, 代表其他用户具有可执行的权限.
返回值:若所有欲核查的权限都通过了检查则返回0 值, 表示成功, 只要有一个权限被禁止则返回-1.
错误代码:
EEXIST 参数pathname 所指的文件已存在, 却使用了O_CREAT 和O_EXCL 旗标.
EACCESS 参数pathname 所指的文件不符合所要求测试的权限.
EROFS 欲测试写入权限的文件存在于只读文件系统内.
EFAULT 参数pathname 指针超出可存取内存空间.
EINVAL 参数mode 不正确.
ENAMETOOLONG 参数 pathname 太长.
ENOTDIR 参数pathname 不是目录.
ENOMEM 核心内存不足.
ELOOP 参数pathname 有过多符号连接问题.
EIO I/O 存取错误.
附加说明:使用 access()作用户认证方面的判断要特别小心, 例如在access()后再作open()空文件可能会造成系统安全上的问题.
范例
1 #include <unistd.h> 2 #include <sys/types.h> 3 #include <sys/stat.h> 4 #include <fcntl.h> 5 main() 6 { 7 int fd, size; 8 char s[] = "Linux Programmer!\n", buffer[80]; 9 fd = open("/tmp/temp", O_WRONLY|O_CREAT); 10 write(fd, s, sizeof(s)); 11 close(fd); 12 fd = open("/tmp/temp", O_RDONLY); 13 size = read(fd, buffer, sizeof(buffer)); 14 close(fd); 15 printf("%s", buffer); 16 }
转载于:https://www.cnblogs.com/jikexianfeng/p/7085795.html
C语言open()函数:打开文件函数(转)相关推荐
- linux so lazyload,linux函数深入探索——open函数打开文件是否将文件内容加载到内存空间...
转自:https://blog.csdn.net/qq_17019203/article/details/85051627 问题:open(2)函数打开文件是否将文件内容加载到内存空间 首先,文件打开 ...
- fopen是python内置函数吗_Python内置的open函数,打开文件的时候可能会产生异常_学小易找答案...
[简答题]模仿操作一回. 上传JPG. [单选题]关于唐.宋诗之间的差异,缪钺.钱钟书.启功等学者都曾有过论述,请问以下哪一项评论出自钱钟书的<谈艺录>? [单选题]"羌笛何须怨 ...
- linux 内存中建立文件,linux函数深入探索——open函数打开文件是否将文件内容加载到内存空间...
转自:https://blog.csdn.net/qq_17019203/article/details/85051627 问题:open(2)函数打开文件是否将文件内容加载到内存空间 首先,文件打开 ...
- python open函数用法_Python使用open函数打开文件的常用模式
python 中open()的用法? open("/path/to/my/image.png", "rb") 中的'rb'代表了什么意思?所有试图感动你而做的事 ...
- c语言open函数打开文件方式,Linux中C语言open函数打开或创建文件详细讲解
Linux中C语言open函数打开或创建文件详细讲解 Linux中C语言open函数打开或创建文件详细讲解 头文件: #include #include #include 函数原型: int open ...
- c语言函数的使用步骤,c语言打开文件函数使用方法
ANSI C规定文件打开用函数fopen,关闭为fclose. 1.调用方式通常为: FILE *fp; fp=fopen(文件名, 打开方式); 2.参数说明: 文件名: 形如"myfil ...
- Python open函数打开文件路径
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符,标示符'r'表示读. >>> f = open('D:/test.txt','r') 注 ...
- open()—打开文件函数
头文件:#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 定义函数: ...
- python open函数默认路径_Python open函数打开文件路径
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符,标示符'r'表示读. >>> f = open('D:/test.txt','r') 注 ...
最新文章
- R语言应用calibrate包的textxy函数向R原生绘图结果中添加文本标签:添加多个文本标签、改变文本标签的字体、改变文本标签的字体颜色
- Lightingcolorfilter 滤镜
- error while loading shared libraries: libopencv_highgui.so.3.2: cannot open shared object file 的解决办法
- 16-CoreData之多表关联(存储自定义数据模型)
- 《数据库SQL实战》获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary
- python selenium使用JS新建标签(new tab)与切换标签
- 可解释性系列论文:Mathematics of Deep Learning
- 主题:JAVA 桥接模式
- aspx页面中文汉字显示为乱码
- solr中facet及facet.pivot理解
- 空指针、NULL指针、零指针
- Valve员工手册,一部震惊世界的“人生攻略”
- c++ opencv4.5.0 头文件_简单的C程序分析(first.c程序)
- KMPlayer播放mkv视频不出声音的解决办法
- 【计算机视觉40例】案例10:隐身术
- torch.Tensor详解
- linux堆栈有什么作用,嵌入式世界里,堆栈的作用和意义
- c语言数独出题程序,C语言实现的数独解题程序
- imToken—钱包如何导出助记词?
- 线上引流获客渠道有哪些
热门文章
- 你还在犹豫要不要学习Java?不妨来看看我的见解如何?
- 如何系统性的学习 Javascript?
- mysql的time格式化_【mysql格式化日期】
- c51随机数不重复_怎么让51单片机产生随机数?
- php备份远程系统快照,ZFS snapshot高级篇之快照备份
- python 进度条_6种酷炫Python运行进度条
- oracle bucket trace,Frequent generate a lot of cdmp* directories contain *bucket trace in bdump
- C语言排序方法-----直接插入排序
- 驱动GPIO操作归纳
- 作业一——根据成绩计算出至少需要发多少奖金才能让所有的组满意。