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

每个进程都会默认打开3个文件描述符,即0、1、2。其中0代表标准输入流、1代表标准输出流、2代表标准错误流。通常标准输入流对应着键盘的设备文件、标准输出流和错误流对应着显示器的设备文件。在编程中通常使用宏STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO分别来代表0,1,2。

要注意一点:

0、1、2这三个文件描述符对应的是标准输入流、标准输出流和标准错误流而不是键盘设备文件和显示器设备文件。只是默认标准输入流对应着键盘设备文件,标准输出和错误对应着显示器设备文件。

而一些C库提供的标准IO函数,这些函数操作的是文件描述符,是标准输入流、输出流或者错误流,而不是键盘的设备文件和显示器的设备文件。如果改变了标准输出流和显示器设备文件之间的对应关系,那么可能结果就不会在显示器上。这种情况出现在命令行中使用重定向符号的时候,标准输入、标准输出和标准错误对应的就不是键盘设备文件和显示器设备文件,而是指定的某个普通的文件。

时间: 2024-10-08 03:13:24

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

文件IO详解(十)---文件共享(多进程之间、单进程之间)

在同一个进程中,实现文件共享的方法有两种: 多次使用open函数打开相同文件 使用dup/dup2函数或者fcntl函数 ======================================================== 对于第一种方法: 每次使用open函数打开文件时,操作系统内核中都会创建一个不同的文件表项(struct file结构体),但是这些不同的struct file结构体最终都会指向同一个struct inode结构体,因为一个文件只能对应唯一的一个struct in

文件IO详解(五)---open函数详解

open函数用来在进程中打开文件,如果成功则返回一个文件描述符fd. ======================================================= 函数原型: 函数参数: pathname:打开文件的路径名 flags:用来控制打开文件的模式 mode:用来设置创建文件的权限(rwx).当flags中带有O_CREAT时才有效. 返回值: 调用成功时返回一个文件描述符fd 调用失败时返回-1,并修改errno ==========================

文件IO详解(七)---lseek函数详解

lseek函数用来设置当前文件偏移量. ====================================================== 函数原型: 函数参数: fd:要操作的文件描述符 offset:基于whence参数的偏移量 whence:参考点位置 返回值: 调用成功时返回当前相对于文件开头的偏移量,以字节为单位 调用失败时返回 -1,并修改errno的值 ======================================================= when

文件IO详解(三)---Linux虚拟文件系统

http://blog.chinaunix.net/uid-14735472-id-2921377.html 讲解虚拟文件系统的一些数据结构以及之间的关系,有些地方看不懂 http://www.docin.com/p-941544538.html 讲解了进程打开文件时内核所建立的各种数据结构之间的联系 在给磁盘分区后,每个分区中都可以建立起各自独立的文件系统,建立的物理文件系统可以是相同的,也可以是不同的.那么不同的物理文件系统的组织数据的方式肯定是不同的,比如说ext2文件系统组织数据的方式是

文件IO详解(十四)---dup函数和dup2函数详解

dup和dup2函数是在进程中用来复制文件描述符的,可以实现文件共享. ======================================================== 函数原型: 函数参数: oldfd:要被复制的文件描述符 newfd:在dup2函数中指定的新文件描述符 返回值: 调用成功返回新的文件描述符 调用失败返回 -1 ======================================================== 使用dup或者dup2函数实现文件共

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

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

文件IO详解(十七)---ioctl函数详解

Linux提供了 fcntl 函数来获取到文件的控制标志,同时也提供了 ioctl 函数来获取或者设置一些设备文件的特有属性,比如串口的波特率,显示屏的分辨率等等.文件的控制标志是所有类型的文件都会有的,而特有属性则不一定. ======================================================= 函数原型:注意此函数是 ioctl ,而不是iocntl 但是 ioctl 函数相比于 fcntl 函数比较特别的地方就是由于每种设备文件的特有属性都是不一样的,

文件IO详解(八)---read函数详解

read函数用来在进程中读取某文件中的内容. 函数原型: 函数参数: fd:要读取的文件描述符 buf:保存从文件中读取到的内容的内存首地址 count:希望从文件读取到字节数 返回值: 读取文件发生错误时返回 -1 读取文件遇到文件结尾时返回 0 读取文件正常时返回实际读到的字节数 要注意希望读到的字节数和实际读到的字节数可能并不相等,实际读到的字节数总是小于等于希望读到的字节数.

文件IO详解(六)---close函数详解

close函数用来在进程中关闭文件.当使用close关闭文件时,加在该文件上的所有的建议锁都将会被释放.内核中的文件表项也将会被释放. 函数原型: 函数参数: fd:要关闭文件的文件描述符 返回值: 调用成功返回 0 调用失败返回 -1,并修改errno的值