STDIO - Linux手册页
Linux程序员手册 第3部分
更新日期: 2017-11-26
名称
stdio-标准输入/输出库函数
语法
#包括
文件* stdin;
FILE * stdout;
FILE * stderr;
说明
标准I / O库提供了一个简单而有效的缓冲流I / O接口。输入和输出被映射到逻辑数据流,并且物理I / O特性被隐藏。函数和宏如下所示;有关更多信息,请参见各个手册页。
流通过打开文件而与外部文件(可能是物理设备)相关联,这可能涉及创建新文件。创建现有文件将导致其先前的内容被丢弃。如果文件可以支持定位请求(例如磁盘文件,而不是终端文件),那么与流相关联的文件位置指示符将定位在文件的开头(字节零),除非使用附加文件打开文件模式。如果使用附加模式,则不确定将位置指示符放置在文件的开头还是结尾。位置指示器由后续的读取,写入和定位请求维护。发生所有输入,就像连续调用fgetc(3)函数读取了字符一样;所有输出都好像所有字符都是通过连续调用fputc(3)函数写入的一样。
通过关闭文件,文件将从流中取消关联。在将流与文件取消关联之前,将刷新输出流(任何未写入的缓冲区内容都将传输到主机环境)。关闭文件(垃圾)后,指向FILE对象的指针的值不确定。
随后可以通过相同或另一个程序执行来重新打开文件,并取回或修改其内容(如果可以在开始时将其重新放置)。如果main函数返回其原始调用者,或调用exit(3)函数,则在程序终止之前,所有打开的文件都将关闭(因此所有输出流都将被刷新)。其他终止程序的方法(例如abort(3))不会影响正确关闭文件。
在程序启动时,预定义了三个文本流,无需显式打开它们:标准输入(用于读取常规输入),标准输出(用于写入常规输出)和标准错误(用于写入诊断输出)。这些流的缩写为stdin,stdout和stderr。打开时,标准错误流未完全缓冲;当且仅当流不引用交互式设备时,标准输入和输出流才被完全缓冲。
默认情况下,引用终端设备的输出流始终是行缓冲的。每当读取涉及终端设备的输入流时,这些流的未决输出都会自动写入。如果在输出端子上打印了一部分行之后需要进行大量计算,则有必要在停止输出并进行计算之前使标准输出fflush(3)以便显示输出。
stdio库是库libc的一部分,例程会根据需要由cc(1)自动加载。以下手册页的"摘要"部分指示要使用的包含文件,该函数的编译器声明是什么样的以及需要使用哪些外部变量。
以下定义为宏;在未使用#undef删除其当前定义之前,不得重用这些名称:BUFSIZ,EOF,FILENAME_MAX,FOPEN_MAX,L_cuserid,L_ctermid,L_tmpnam,NULL,SEEK_END,SEEK_SET,SEEK_CUR,TMP_MAX,clearerr,feof,ferror,fileno,getc, getchar,putc,putchar,stderr,stdin,stdout。存在宏函数feof,ferror,clearerr,fileno,getc,getchar,putc和putchar的函数版本,如果显式删除了宏定义,则将使用这些函数版本。
List of functions
单元格不一致
遵循规范
stdio库符合C89。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。