Unix高级编程之文件IO

文件io---低级io

特点:
不带缓存io
优点:
实时性高

1.io基本操作
文件描述符:文件io打开文件的标识
非负整型数,是内核为打开文件维护结构的数组下标
默认最多能打开1024文件

stdin-----0
stdout-----1
stderr-----2
函数:
open(2);
read(2);
write(2);
lseek(2);
<1>允许偏移的字节个数大于文件本身
<2>lseek()本身不进行读写操作
空洞文件
空洞文件本身不占用磁盘空间

close(2);

写一段代码,验证一个进程最多能打开多少个文件?
1021

2.文件的共享
dup(2);
dup2(2);

3.i/o效率
不带缓存,用户所指定的缓存区的大小就会影响io效率
并不是缓存区越大效率越高
推荐4096

4.原子操作
操作不能被分割(打断)
tmpfile();---->原子
tmpname()+creat();---->不原子

dup2();---->原子
close()+dup()---->不原子

5.刷新内核缓存
sync(2);//刷新缓存区到内核io队列,不阻塞
fsync(2);//阻塞,直到文件的数据和inode信息全部刷新在磁盘空间才会返回
fdatasync(2);//阻塞,只是文件的数据刷新在磁盘空间才会返回

6.fcntl(2);
<1>复制文件描述符
<2>改变文件描述符标识
<3>改变文件状态标识
<4>文件锁
<5>记录锁
ioctl();

时间: 2024-11-14 03:44:12

Unix高级编程之文件IO的相关文章

【UNIX环境高级编程】文件 IO 操作 - 基础函数 open close creat lseek write read 详解

博客地址 : http://blog.csdn.net/shulianghan/article/details/46980271 一. 文件打开关闭操作相关函数介绍 1. open 函数 (1) open 函数简介 open 函数解析 : -- 函数定义 : #include <fcntl.h> int open(const char *path, int oflag, ...); -- 函数作用 : 打开或者创建一个文件; -- 返回值 : 打开文件成功, 返回文件描述符; 如果失败, 返回

Unix高级编程之标准IO

c标准io---带缓存的io 优势: 带缓存(合并系统调用)缺点: 实时性低缓存的类型: 行缓存:stdin stdout(缓存区是有大小) 全缓存:文件 无缓存:stderr 1.流 打开文件的标识 2.FILE类型 结构体类型: 文件描述符 缓存区的地址 缓存的大小 出错标识 3.流的打开 fopen(3); errno全局变量 定义的宏: /usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno.h strer

Unix高级编程之文件及目录

文件和目录 实现 ls -l 1.stat();fstat();lstat(); 2.文件的类型(st_mode) dbcpls- d:目录 b:块设备 c:字符设备 p:管道 l:符号链接 s:套接字 -:普通文件 3.文件的权限(st_mode)rwxu+s:u一定要拥有x权限,加s权限,使得执行此文件的用户临时拥有文件拥有者权限g+s:o+t:如果一个目录有t权限,能够保证其他用户对此目录都能创建文件,但是只能删除/修改自己的文件 4.文件的硬链接个数(st_nlink) 硬链接: 给任意

unix高级编程中的一个头文件 apue.h 与一个差错文件error.c 的内容

在查看unix高级编程中的代码时,如果我们编写书中的代码,发现一般都会报错,这是因为作者在写这本书时,他自己编写了一个头文件,跟一个差错处理文件,出来处理他自己的代码错误信息: 下面我们来看下代码的内容: 我实现第一个代码,关于文件的打开,实现 ls 命令的代码: #include "apue.h"#include <stdio.h>#include <dirent.h> int main(int argc, char *argv[]){ DIR *dp; st

&lt;unix高级编程&gt;笔记 chapter1

os严格上是软件,为计算机提供资源和app运行环境. 特称为内核. 内核的接口被成为system call;然后库函数对system call进行了封装;shell是特殊app,为运行其他程序提供了一个接口. shell是个命令行解释器,读取输入,执行命令. unix文件系统是由directory和file组成.目录起点成为root,名字是/. 文件属性指类型\大小\所有者\权限以及修改时间.stat和fstat返回文件属性的结构. 比如下面操作: 2.文件名 只有/和null不能出现在文件名里

看unix高级编程时遇到apue.h找不到的问题

一开始看到这本书,刚翻了几页,就觉得对味.按照书中的代码做练习时,编译代码文件提示fatal error: apue.h: No such file or directory.翻看书的附录B,可以看到apue.h的资料,原来作者是为了减少书中示例代码的长度,将很多包含头文件的代码封装到了apue.h 这个文件. 下载源码 从unix高级编程书籍官网下载书籍的上的所有源码. wget http://www.apuebook.com/src.tar.gz 解压这个文件 tar -zxvf src.t

UNIX 高级编程(第二版) apue.h配置问题

在第二版的UNIX高级编程中,apue.h头文件下载后,编译过程中出现无法编译的问题,解决方法如下: 在http://www.apuebook.com/下载src.tar.gz源代码的压缩包. 1.解压至/home/user/目录下 2.修改 Make.defines.linux中的WKDIR=/home/xxx/apue.2e,为WKDIR=/home/user/apue.2e 3.返回至apue.2e目录下面,修改linux.mk,将里面的nawk全部改为awk,可以使用这个命令 :%s/n

Python高级编程和异步IO并发编程

Python高级编程和异步IO并发编程网盘地址:https://pan.baidu.com/s/1eB-BsUacBRhKxh7qXwndMQ 密码: tgba备用地址(腾讯微云):https://share.weiyun.com/5Z3x9V0 密码:7cdnb2 针对Python高级编程和异步IO并发编程,把每个Python高级知识点从起因到原理讲透的课程全网难寻 第1章 课程简介第2章 python中一切皆对象第3章 魔法函数第4章 深入类和对象第5章 自定义序列类第6章 深入python

Unix环境高级编程(一)文件I/O

Unix系统中大多数文件I/O只需用到五个函数:open.read.write.lseek.close.本章说介绍的I/O是不带缓冲的,即:每个read和write都调用内核中的一个系统调用.不是ISO C的组成部分.对于内核而言,所有打开的文件都通过文件描述符引用. 在<unistd.h>中定义三个标准的文件描述符: STDIN_FILENO 标准输入 STDOUT_FILENO 标准输出 STDERR_FILENO 标准出错输出 具体函数描述:在<fcntl.h>头文件下 in