unix IO笔记
一、IO与文件映射
1、IO的共享与效率
read与write其中数据缓冲的大小
读取数据的缓冲:getpagesize
2、定位与定位读取(随机读取)
read与write在操作的时候,自动移动读取位置。
lseek读取定位,改变读取位置。
pread/pwrite在指定位置读写。
lseek函数说明:返回当前读取位置在文件中的绝对位置
off_set lseek(int fd,//定位文件描述符号
off_t off,// 定位位置
int whence/ 文件开始位置/文件结束位置/文件当前位置 SEEK_SET/SEEK_END/SEEK_CUR)
lseek的作用:定位文件的位置。lseek移动位置只要合法,都是有效的。
lseek+write = pwrite lseek+read = pread
读取一个特殊的文件:
/proc/${pid}/mem文件程序中的虚拟映射文件
文件的其他操作
fstat获取文件状态
ftruncate改变文件大小
文件映射:
虚拟地址映射到内存;
虚拟地址可以映射到文件:可以用内存的方式访问文件。
mmap/munmap
1、使用内存方式写入数据
2、使用内存方式读取数据
二、文件描述符号的操作(IO锁)
文件描述符号是整数,文件描述符号对应内核的上下文环境
dup 返回系统指定的整数 dup2拷贝文件描述符号,返回用户指定的整数
fcntl对文件描述属性的修改
拷贝文件描述符号
修改判定文件的遗传方式(描述标记)
修改判定文件的状态标记
设置强制锁,重新编译内核
设置建议锁,(默认方式)
设置信号
unix IO笔记的更多相关文章
- 深入理解计算机操作系统——第10章:UNIX IO,打开,关闭,读写文件
系统级IO:输入输出是主存与外部设备(磁盘,终端,网络)之间拷贝数据的过程 输入:从IO设备拷贝数据到主存中 输出:从主存中拷贝数据到IO设备中 10.1 unix IO 所有的IO设备都被模型化为文 ...
- unix io 模型浅析
POSIX中对同步IO和异步IO的规定: 同步IO操作:引起进程的阻塞直到IO操作完成,异步IO操作:IO操作不会引起进程阻塞 在UNIX下,有5中操作模型: 阻塞IO,非阻塞IO,IO复用,信号驱动 ...
- Java IO笔记
第一:File类(主要获取文件名,判断文件是否存在,创建或者删除文件) 举个例子,代码如下: import java.io.File; public class Main{ public static ...
- UNIX读书笔记----UNIX基础知识
UNIX体系结构: 从严格意义上讲,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们通常将这种软件称为内核(Kernel),因为他相对较小,而且位于环境的核心.图片显示了UNI ...
- IO笔记(学习尚硅谷java基础教程)
一.基础知识 1. 在普通方法和测试方法中文件路径的差异 在普通方法中:文件路径相当于在当前项目中,而不是当前Module(以项目为基准) 在测试方法中:文件路径相当于在当前Module中,而不是当前 ...
- Unix/Linux笔记全集
1:Unix/Linux操作系统概述 要求:理解应用软件和操作系统的区别,掌握系统的Kernel(核心)和shell(外壳)之间的关系以及各自的作用 Solaris:Solaris 是Sun Micr ...
- socket.io笔记
API 网址:https://socket.io/get-started/chat/ 页面上引入: 服务器: 每一个socket可以触发一个断开连接事件: 如果需要使用jquery: 引入网页的jqu ...
- socket.io笔记三之子命名空间的socket连接
当客户端发送admin命名空间下的连接,如果主连接也监听了connetion事件,主连接的connection事件会先触发执行,然后紧接着触发执行admin命名空间下的connection事件.如果客 ...
- socket.io笔记一
//服务端代码 var server = require('http').createServer(app); var io = require('socket.io')(server,{path:' ...
随机推荐
- Dialog with HTML skin using CDHtmlDialog and SetWindowRgn
Introduction This program demonstrates how to use CDHtmlDialog and SetWindowRgn functions to give a ...
- SpringMVC深入理解
核心类与接口 - DispatcherServlet 前置控制器- HandlerMapping 请求映射(到Controller)- HandlerAdapter 请求映射(到Controller类 ...
- iOS 检测更新版本
获取app版本URL 数字是appID,在开发者账号app信息中可以找到 #define APP_URL @"http://itunes.apple.com/cn/lookup?id=116 ...
- Android项目开发五-《星星生活志》1.使用MediaRecorder录制音频
Android设备实现录制音频的简单demo 转载请注明; http://blog.csdn.net/u013670933/article/details/26089487 代码例如以下: publi ...
- [置顶] 内存映射失败MapViewOfFile 失败 返回 8
问题描述1 在使用内存映射方式读写数据时,将文件A的内容拷贝至文件B中,偶尔会出来文件拷贝后的文件,内容为空,或部分为空 问题分析1 怀疑是内存映射方式读写数据的稳定性(可笑的怀疑,内存映射可以Win ...
- Migration data on SQL
从表里面导出数据XML: -- export declare @xml xml set @xml = (select * from ( select TableName = 'Schema', xml ...
- oracle 计算两个时间之间的月份差,相差几个星期,相差多少天
相差多少天: sysdate-to_date('1991-01-01','YYYY-MM-DD'))<7 and (sysdate-to_date('1991=01=01','YYYY-MM ...
- npm 安装
1.https://nodejs.org/en/ 下载node.js 控制台,查看node版本 C:\WINDOWS\system32>node --version 出现版本表示安装成功 2 ...
- UVa1585 Score
#include <stdio.h> int main(){ int T, O, score; char str[81], *p; scanf("%d" ...
- POJ 1840 Brainman(逆序对数)
题目链接:http://poj.org/problem?id=1804 题意:给定一个序列a[],每次只允许交换相邻两个数,最少要交换多少次才能把它变成非递降序列. 思路:题目就是要求逆序对数,我们知 ...