为你推荐

标准I/O库之临时文件

ISOC标准I/O库提供了两个函数以帮助创建临时文件。#include<stdio.h>char*tmpnam(char*ptr);返回值:指向唯一路径名的指针FILE*tmpfile(void);返回值:若成功则返回文件指针,若出错则返回NULL若ptr是NULL,则所产生的路径名存放在一个静态区中,指向...
代码星球·2021-02-21

标准I/O之实现细节

在UNIX系统中,标准I/O库最终都要调用文件I/O(read、write等)。每个标准I/O流都有一个与其相关联的文件描述符,可以对一个流调用fileno函数以获得其描述符。注意,fileno不是ISOC标准部分,而是POSIX.1支持的扩展。#include<stdio.h>intfileno(FILE...
代码星球·2021-02-21

标准I/O库之定位流

有三种方法定位标准I/O流。(1)ftell和fseek函数。这两个函数自V7以来就存在了,但是它们都假定文件的位置可以存放在一个长整型中。(2)ftello和fseeko函数。SingleUNIXSpecification引入了这两个函数,可以使文件偏移量不必一定使用长整型。它们使用off_t数据类型代替了长整型。(...
代码星球·2021-02-21

标准I/O库之格式化I/O

本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。一、格式化输出执行格式化输出处理的是4个printf函数。#include<stdio.h>intprintf(constchar*restrictformat,......
代码星球·2021-02-21

标准I/O库之二进制I/O

如果进行二进制I/O操作,那么我们更愿意一次读或写整个结构。因此,提供了下列两个函数以执行二进制I/O操作。#include<stdio.h>size_tfread(void*restrictptr,size_tsize,size_tnobj,FILE*restrictfp);size_tfwrite(co...
代码星球·2021-02-21

标准I/O库之标准I/O的效率

程序清单5-1用getc和putc将标准输入复制到标准输出#include"apue.h"intmain(void){intc;while((c=getc(stdin))!=EOF)if(putc(c,stdout)==EOF)err_sys("outputerror");if(ferror(stdin))err_sy...
代码星球·2021-02-21

标准I/O库之每次一行I/O

下面两个函数提供每次输入一行的功能。#include<stdio.h>char*fgets(char*restrictbuf,intn,FILE*restrictfp);char*gets(char*buf);两个函数返回值:若成功则返回buf,若已到达文件结尾或出错则返回NULL这两个函数都指定了缓冲区的...
代码星球·2021-02-21

标准I/O库之打开和关闭流

下列三个函数打开一个标准I/O流。#include<stdio.h>FILE*fopen(constchar*restrictpathname,constchar*restricttype);FILE*freopen(constchar*restrictpathname,constchar*restrict...
代码星球·2021-02-21

标准I/O库之读和写流

一旦打开了流,则可在三种不同类型的非格式化I/O中进行选择,对其进行读、写操作:(1)每次一个字符的I/O。一次读或写一个字符,如果流是带缓冲的,则标准I/O会处理所有缓冲。(2)每次一行的I/O。如果想要一次读或写一行,则使用fgets和fputs。每行都以一个换行符终止。当调用fgets时,应说明能处理的最大行长。...
代码星球·2021-02-21

标准I/O库之缓冲

标准I/O库提供缓冲的目的是尽可能减少使用read和write调用的次数。它也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦。标准I/O提供了三种类型的缓冲:(1)全缓冲。这种情况下,在填满标准I/O缓冲区后才进行实际的I/O操作。对于驻留在磁盘上的文件通常是由标准I/O库实施全缓冲的。...
代码星球·2021-02-21

标准I/O库之标准输入、标准输出和标准出错

对一个进程预定义了三个流,并且这三个流可以自动地被进程使用,它们是:标准输入、标准输出和标注出错。这些流引用的文件与文件描述符STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO所引用的文件相同。这三个标准I/O流通过预定义文件指针stdin、stdout和stderr加以引用。这三个文件指...

标准I/O库之流和FILE对象

对于标准I/O库,它们的操作是围绕流(stream)进行的。当用标准I/O库打开或创建一个文件时,我们已使一个流与一个文件相关联。对于ASCII字符集,一个字符用一个字节表示。对于国际字符集,一个字符可以用多个字节表示。标准I/O文件流可用于单字节或多字节(“宽”)字符集。流的定向(stream’sorientatio...
代码星球·2021-02-21

文件和目录之文件访问权限位小结

表4-12文件访问权限位小结常量说明对普通文件的影响对目录的影响S_ISUIDS_ISGID设置用户ID设置组ID执行时设置有效用户ID若组执行位设置,则执行时设置有效组ID,否则使强制性记录锁起作用(若支持)(不使用)将在目录中创建的新文件的组ID设置为目录的组IDS_ISVTX粘住位在交换区保存程序正文(若支持)限...

文件和目录之设备特殊文件

st_dev和st_rdev:每个文件系统所在的存储设备都由主、次设备号表示。设备号所用的数据类型是基本系统数据类型dev_t。主设备号标识设备驱动程序,有时编码为与其通信的外设板;次设备号标识特定的子设备。例如,磁盘驱动器经常包含若干个文件系统。在同一磁盘驱动器上的各文件系统通常具有相同的主设备号,但它们的次设备号却...
代码星球·2021-02-21

文件和目录之chdir、fchdir和getcwd函数

每个进程都有一个当前工作目录,此目录是搜索所有相对路径名的起点(不以斜杠开始的路径名为相对路径名)。当用户登录到UNIX系统时,其当前工作目录通常是口令文件(/etc/passwd)中该用户登录项的第6个字段——用户的起始目录(homedirectory)。当前工作目录是进程的一个属性,起始目录则是登录名的一个属性。进...