9. 贯穿案例:构建标准IO函数库 //mstdio.h #ifndef __MSTDIO_H__ #define __MSTDIO_H__ #include <unistd.h> #define MEOF -1 //定义文件末尾标志 //文件读写模式 enum mode{READ, WRITE, APPEND}; //MFILE结构体 typedef struct { int _fd; char* _buffer; //缓冲区 char* _nextc; //下一个字符 int _mode;…
标准IO函数库隐藏了buffer大小和分配的细节,使得我们可以不用关心预分配的内存大小是否正确的问题. 虽然这使得这个函数库很容易用,但是如果我们对函数的原理不熟悉的话,也容易遇到很多问题.   1 流和FILE实体(Streams and FILE Objects) 前面的章节中,IO集中在文件描述符,每一个打开的文件都对应一个文件描述符,通过文件描述符对文件进行操作. 现在使用了标准IO库,讨论的重点集中在流(streams). 简要了解一下流: 当我们打开或创建了一个文件,我们说我们有一个…
1 二进制IO(Binary IO) 在前一篇我们了解了逐字符读写和逐行读写函数. 如果我们在读写二进制文件,希望以此读写整个文件内容,这两个函数虽然可以实现,但是明显会很麻烦且多次循环明显效率很低. 为了应对这种场景,标准IO库提供了fread和fwrite函数. 函数声明: #include <stdio.h> size_t fread(void *restrict ptr, size_t size, size_t nobj, FILE *restrict fp); size_t fwri…
[20171221]利用rman实现2台机器文件拷贝.txt --//昨天使用rman duplicate建立dg,我看到执行如下代码: RMAN> duplicate target database for standby from active database nofilenamecheck;...contents of Memory Script:{   backup as copy reuse   targetfile  '/u01/app/oracle/product/11.2.0.…
什么是标准IO呢?有哪些特点? 标准IO是标准c库提供的对文件操作的函数接口.他的特点是:1 带缓存,2 大部分都调用系统接口函数实现.(c库就是一种实现好的函数接口,作用是屏蔽下层细节.提供上层接口.提高移植性) 我们都知道标准IO是带有缓存的,那么缓存分为几种呢? 1>全缓存: 有4096byte,截止条件有三,一是缓存满的时候,二是调用fflush的时候,三是进程正常结束的时候 2>行缓存: 有1024byte,它与全缓存截止的条件最大的差异就是另外遇到'\n'的时候. 3>不缓存…
Channel-to-channel传输是可以极其快速的,特别是在底层操作系统提供本地支持的时候.某些操作系统可以不必通过用户空间传递数据而进行直接的数据传输.对于大量的数据传输,这会是一个巨大的帮助.--摘抄至<Java NIO> 今天学习了NIO的channel-to-channel的数据传输方式,为了对其有一个较清晰的认识,特意进行测试,并与java-io的传统传输方式进行比较.以下将通过对我测试实例的分析来阐述其用法,并挖掘其隐藏问题点.请往下看. 一.先上代码 package nio…
引用: using System.IO.Compression; using (FileStream zipToOpen = new FileStream(@"D:\json.zip", FileMode.Open)) { using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update)) { ZipArchiveEntry readmeEntry = archive.Entries[]; usin…
A: 代码重复: 语句块1: while(判断) { 语句块2: 语句块1: } 上面可以改写为: while(1) { 语句块1: if(判断) break: 语句块2: } B: 标准IO和文件IO的区别: 标准IO:文件流fp,有缓存,库函数 文件IO:文件描述符fd(小的,非负的整型数),无缓存,系统调用 标准IO是依赖于文件IO的 b1: 标准IO: stdin   键盘 stdout   屏幕 stderr   屏幕 fgetc   每次读入一个字符          fputc  …
2015.2.26 星期四,阴天 今天的内容主要是文件IO man 手册的分册: man -f open 查看那些分册中有openman 1 -- 普通的命令程序man 2 -- 系统调用man 3 -- 库函数 文件:操作系统将硬件抽象成文件输入:将设备中的数据写进到内存输出:将内存中的数据写出到设备 Linux的文件系统由两层结构构成:第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统 posix:可移植操作系统接口规范API:用户编程接口 应用通过POSIX和GNU C LI…
文件IO与标准IO的区别 文件I/O就是操作系统封装了一系列函数接口供应用程序使用,通过这些接口可以实现对文件的读写操作,文件I/O是采用系统直接调用的方式,因此当使用这些接口对文件进行操作时,就会立刻触发系统调用过程,即向系统内核发出请求之后,系统内核会收到执行相关代码处理的请求,决定是否将操作硬件资源或返回结果给应用程序 标准I/O虽然也是使用一系列函数接口对文件进行读写操作,但函数出自C库.因此,封装了底层系统调用更多的调用函数接口. 标准I/O与文件I/O的本质区别在于: 标准I/O函数…