标准文件IO详解(二)---标准输入流、标准输出流和标准错误流

  在文件 IO 中使用文件描述符fd来表示一个文件不同,而标准 IO 使用一个指向 FILE 对象的指针来代表一个文件。FILE 对象实际上是一个结构体,此结构体中封装了代表文件的文件描述符。当然不仅仅是含有文件描述符,其中还会记录属于该文件的用户缓冲区信息。

  在文件 IO 详解笔记中提到过标准输入、标准输出和标准错误,分别对应文件描述符的0、1、2,也可以使用STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO三个宏来代替。这三个文件描述符是创建进程时默认会打开的。

  对应着文件 IO 中0、1、2文件描述符,在标准文件 IO 中也会有对应的标准输入流、标准输出流和标准错误流,分别使用stdin、stdout和stderr来代表。同样这三个文件流指针也是在创建进程时会默认打开的。

时间: 2024-12-21 20:42:19

标准文件IO详解(二)---标准输入流、标准输出流和标准错误流的相关文章

标准文件IO详解(三)---缓冲区详解

标准文件 IO 相比于文件 IO 来说,在用户层中增加了一个用户缓冲区.也就是说在使用标准IO 来操作文件的时候,都会经过此用户层的缓冲区.比如使用标准 IO 来向文件中写入内容的时候,首先内容会首先被写入到用户缓冲区中,等到 缓冲区满 或者 刷新缓冲区 的时候在调用文件 IO 将内容写入到内核中的磁盘缓冲区中. ==================================================== 用户缓冲区的类型: 全缓冲 此种类型的缓冲只有在缓冲区满的时候才会调用实际的文

标准文件IO详解(一)---文件IO操作和标准文件IO操作的区别

POSIX IO操作称为文件IO,也称为低级文件IO,是操作系统提供的系统调用,属于没有缓冲区的文件操作方式.执行该种操作后,内容会直接被写入到内核中的提供给磁盘的专门缓冲区中,内核会定期的刷新该缓冲区,将内容同步到磁盘当中. ANSI  C IO操作称为标准文件IO,也称为高级文件IO,是C库函数提供的,属于带有缓冲区的文件操作方式.执行该种操作后,内容首先会将内容写入到用户空间的缓冲区中,待缓冲区满或者需要刷新的时候再去调用文件IO,将内容写入到内核的磁盘缓冲区当中. 相比于低级文件IO,高

标准文件IO详解(九)---fileno函数详解

在前面笔记“打开流详解”中提到了 fdopen 函数,可以通过文件描述符 fd 来获取对应的文件流指针.而同时 C 库函数提供了 fileno 函数,这个函数的作用就是能够通过 文件流指针来获取对应的 文件描述符 fd . ======================================================= 函数原型: 函数参数: stream:要操作的文件流指针 返回值: 函数返回与文件流指针对应的文件描述符,此函数不会出错(和umask函数类似) =========

标准文件IO详解(四)---打开流详解

c库中提供了 fopen 和 fdopen两个函数用于打开流,获取到文件流指针. ===================================================== 函数原型: 函数参数: path:要打开文件的路径 mode:打开的模式 返回值: 调用成功时返回 文件流指针 调用失败时返回 NULL ===================================================== mode参数可以是以下参数中的一个: r:只读模式:要求文件必须

标准文件IO详解(八)---格式化 IO

这里只介绍几种常用的格式化 IO 函数,这些函数如下所示: fprintf:将内容按照指定格式写入到文件当中 sprintf:将内容按照指定格式写入到内存当中 snprintf:相比于 sprintf 函数来说,就是增加了 字符数 的限制 vfprintf:相比于 fprintf 函数而言,只是将变参 ... 变为一个具体的参数arg vsprintf:同上 vsnprintf:同上 =======================================================

标准文件IO详解(七)---定位流

和文件 IO 中有 lseek 函数类似,C库函数中提供了 fseek .ftell 和 rewind 三个函数来对流进行定位操作.====================================================== 函数原型: 函数参数: stream:要操作的文件流指针 offset:相对于参数 whence 的偏移量 whence:参考点 返回值: 调用成功时返回 0 调用失败时返回 -1 参数whence可以是以下几个值之一: SEEK_SET:代表文件开头 SE

标准文件IO详解(六)---fclose函数详解

fclose函数和close函数类似,用于关闭文件流指针.fclose函数被调用后,属于该文件流指针的用户缓冲区将会被强制刷新,并且对应的文件描述符 fd 也将会被关闭. ====================================================== 函数原型: 函数参数: fp:要关闭的文件流指针 返回值: 调用成功时返回 0 调用失败时返回 EOF

标准文件IO详解(五)---读和写流

C库函数中提供了三种不同类型的读写函数,这三种不同类型的读写方式如下: 一个字符一个字符的进行读写 以换行符为界一行一行的进行读写 一块一块的进行读写 ====================================================== 以字符为单位的读写函数: fgetc函数 和 fputc 函数 函数原型: 函数参数: stream:要操作的文件流指针 返回值: 调用成功时返回读取到的字符 调用失败时返回 EOF(-1) 读取到文件末尾时返回 EOF(-1) 注意:当

文件IO详解(二)---文件描述符(fd)和inode号的关系

1.文件描述符和inode号码是不同的两个东西. 2.对于每个进程,系统会建立一个进程控制块(PCB)来保存相关的信息,而这个PCB在内核中的表现其实就是一个称为task_struct的结构体,这个结构体的成员用来保存与此进程有关的相关信息,其中有个成员是struct file_struct  *files,它是用来找到此进程所有打开的文件列表的,files变量指向的是struct file_struct类型的结构体,这个结构体中有一个成员是一个指针数组struct file *fd_array