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)串口的操作, ...
随机推荐
- pycharm 字符编码错误处理
如果在MySQL创建表空间时指定了他的字符集为utf8 但是插入数据后 在pycharm查看却出现字符乱码 怎么解决呢 ? 首先进入cmd 页面 输入 chcp 65001 (意思是指定cmd所有字 ...
- rabbitmq pika(python)订阅发布多客户端消费场景简单使用
发布端: import pika import time credentials = pika.credentials.PlainCredentials('root', 'root',erase_on ...
- 以聚合数据免费接口为例,通过 Class 类继承方法,让小程序实现项目化接口调用
微信小程序数据来源,是通过接口实现的.但接口如何调,数据如何取?每个人都有不同的方法,下面以聚合数据免费接口为例. 配置接口 config.js 聚合数据请求接口需要以key作为参数. const c ...
- 初学JavaScript正则表达式(十三)
字符串方法 search(reg) search()用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串 方法返回第一个匹配结果index,查找不到返回-1 search()不执行全局匹 ...
- 小程序的flex布局
小程序建议使用flex布局进行排版 flex就是一个盒装弹性布局 flex是一个容器,所有子元素都是他的成员 小程序的flex布局 定义布局 display:flex flex容器的属性: flex- ...
- linux-zookeeper-kafka入门
公告:版权所有,违者必究 1.zookeeper安装 前提:先安装jdk,zookeeper运行依赖于java环境. (1.)下载安装包 http://mirror.bit.edu.cn/apache ...
- 设计模式-单例模式(Singleton) (创建型模式)
//以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Singleton.h #pragma once #include<iostream> class Sin ...
- 微信小程序云开发-从0打造云音乐全栈小程序
第1章 首门小程序“云开发”课程,你值得学习本章主要介绍什么是小程序云开发以及学习云开发的重要性,并介绍项目的整体架构,真机演示项目功能,详细介绍整体课程安排.课程适用人群以及需要掌握的前置知识.通过 ...
- Linux高性能服务器编程,书中的 shell 命令
记录<Linux高性能服务器编程>书里面讲解到的若干 shell 命令 arp 命令查看ARP高速缓存: [root@VM_0_10_centos heliang]# arp -a ? ( ...
- TP5 使用验证码功能
工作中后台开发使用的是 TP5,但是对语法不是很熟悉,总是看着手册写代码.当时做 Java 的时候也是这样,很多语法需要靠百度.不是不能写代码,但是这样的效率感觉不高,没有行云流水的感觉,要是能有聊天 ...