Linux open fopen fdopen
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
以下三个常量中必选一个:
O_RDONLY //只读模式
O_WRONLY //只写模式
O_RDWR //读写模式
以下常量选用:
O_APPEND //每次写操作都写入文件的末尾
O_CREAT //如果指定文件不存在,则创建这个文件
O_EXCL //如果要创建的文件已存在,则返回-1,并且修改errno的值
O_TRUNC //如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即将其长度截短为0)
O_NOCTTY //如果路径名指向终端设备,不要把这个设备用作控制终端
O_NONBLOCK //如果路径名指向FIFO/块文件/字符文件,则把文件的打开和后继I/O
以下三个常量同样是选用的,它们用于同步输入输出:
O_DSYNC //等待物理I/O结束后再write。在不影响读取新写入的数据的前提下,不等待文件属性更新
O_RSYNC //read等待所有写入同一区域的写操作完成后再进行
O_SYNC //等待物理I/O结束后再write,包括更新文件属性的I/O
open返回的文件描述符一定是最小的未被使用的描述符
参数mode 组合
S_IRWXU //00700权限,代表该文件所有者具有可读、可写及可执行的权限
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权限,代表其他用户具有可执行的权限
creat(const char* pathname, mode_t mode);
open和creat区别:
creat()创建文件,总会运行成功
creat()创建已存在的文件,并不会更改原文件的属性
O_APPEND
含义是在每次写之前,都将标志位移动到文件的末端
int fd = open("test.txt", RDWR | O_APPEND);
lseek(fd, 10, SEEK_SET);
这里lseek是没有用的
转换
FILE *fp = fopen("test.txt", "r");
int fd = fileno(fp);
寻找文件流使用的是哪个底层文件描述符。进行底层访问操作(比如想对他调用fstat)
FILE *fdopen(int fd, const char *mode);
根据文件描述符创建文件流。为一个已经打开的文件描述符提供一个stdio缓冲区
Linux open fopen fdopen的更多相关文章
- fopen, fdopen, freopen - 打开流
SYNOPSIS (总览) #include <stdio.h> FILE *fopen(const char *path, const char *mode); FILE *fdopen ...
- php 在linux 用fopen() 函数打开,file_get_contents(),fread()函数 读取 另外一台服务器映射过来的文件 总是返回false,null的情况。
php 在linux 用fopen() 函数打开,fread()函数 读取 另外一台服务器映射过来的文件 总是返回false,null的情况. #获取平台类型 $type='android'; ...
- 【linux草鞋应用编程系列】_1_ 开篇_系统调用IO接口与标准IO接口
最近学习linux系统下的应用编程,参考书籍是那本称为神书的<Unix环境高级编程>,个人感觉神书不是写给草鞋看的,而是 写给大神看的,如果没有一定的基础那么看这本书可能会感到有些头重脚轻 ...
- Linux 系统编程
简介和主要概念 Linux 系统编程最突出的特点是要求系统程序员对它们工作的的系统的硬件和操作系统有深入和全面的了解,当然它们还有库和系统调用上的区别. 系统编程分为:驱动编程.用户空间编程和网络编程 ...
- linux下 文件IO 相关
linux下操作文件或设备,需要一个文件描述符 file descriptor,fd 来引用.fd是一个非负整数,实际上是一个索引值,指向文件的记录表,对文件的操作都需要fd.默认的几个:标准输入流 ...
- 【Linux】【Basis】【Kernel】Linux常见系统调用
一,进程控制 1)getpid,getppid--获取进程识别号 #include <sys/types.h> #include <unistd.h> pid_t getpid ...
- 【转载++】fopen返回0(空指针NULL)且GetLastError是0
结论来看,是一个简单又朴素的道理——打开文件句柄用完了得给关上.表现在现象上却是着实让人费解,以至于有人还怀疑起了微软的Winodws系统来了,可笑至极.还是那句话,先把自己的屁股先给擦干净喽再怀疑别 ...
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- 嵌入式文件I/O操作
今天把这块的东西算是看完了.总结一下,(1)这里包括底层文件的I/O操作,实际上是系统调用函数借口,是基于文件描述符的文件操作:(2)还有标准I/O操作,是基于缓冲流的文件操作:还有(3)串口的操作, ...
随机推荐
- SSH免密码登录和Git免密操作
SSH免密码登录和Git免密操作 每次打完包后都需要把包传到对应的服务器上从而让测试人员下载安装,但是每次ssh或scp时都需要重新输入密码:使用git代码托管平台只要修改了密码就需要输入密码.本文主 ...
- 如何使用 CODING 进行瀑布流式研发
你好,欢迎使用CODING!这份最佳实践将帮助你通过 CODING 更好地实践瀑布流式开发流程. 什么是瀑布流式研发 1970 年温斯顿·罗伊斯(Winston Royce)提出了著名的"瀑 ...
- NOI2015 软件包管器
NOI2015 软件包管器 https://www.luogu.org/problem/P2146 题意 维护一棵树,每个节点都有一个为0或1的值,初始值全为0 需要支持 将一条链上的点都变成1, 将 ...
- c# 第22节 c#四大方法 静态方法、实例方法、虚方法、重新方法
本节内容: 1:静态方法和实例方法什么 2:虚方法是什么 3:重写方法 4:禁止重写方法 1:静态方法和实例方法是什么 静态方法,一般是类的常用方法,允许在不创建类的实例的情况下,直接调用. 静态方法 ...
- Vue.js面试整理
Vue项目结构介绍 build 文件夹:用于存放 webpack 相关配置和脚本. config 文件夹:主要存放配置文件,比如配置开发环境的端口号.开启热加载或开启gzip压缩等. dist 文件夹 ...
- Leetcode4__findMedianSortedArrays
findMedianSortedArrays 基本思路:通过指针按顺序移动来判断大小顺序,思路和有一道用链表求中间值一样: class Solution { public double findMed ...
- 剑指Offer-21.栈的压入、弹出序列(C++/Java)
题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...
- 关于npm(一)
npm install X: 把X包安装到node_modules目录中修改package.json运行npm install命令时,不会自动安装X npm install X –save: 把X包安 ...
- Django 模版语言
传入变量 {{ 变量名 }} 在 view.py 的函数返回 render 时在html文件名后传入一个字典,字典的 key 对应html文件中的变量名,value 为传入的值 views.py: d ...
- 第05组团队Github现场编程实战
第05组团队Github现场编程实战 一.组员职责分工 组员 分工 卢欢(组长) 前后端接口设计 严喜 寻找相关资料 张火标 设计并描述界面原型 钟璐英 编写随笔 周华 填写完善文档 古力亚尔·艾山 ...