浅谈Linux下的重定向

以输出重定向为例,了解Linux下的重定向

重定向:标准输出重定向就是将原本要写入标准输出的数据,不再写入标准输出,而是写入到指定的文件中

    ls>>test.txt(追加重定向)  ls>test.txt(清空重定向)

    ls默认吧浏览目录结果打印出来-->把数据写入标准输出,加入重定向之后,ls程序并没有改变,但是数据流向改变了

重定向原理:通过改变文件描述符对应位置的文件描述信息(struct file结构体中的信息),进而改变所操作的文件,实现数据流向的改变

浅谈Linux下的重定向_第1张图片

两个相关函数:int dup2(int oldfd, int newfd);

                         int  dup(int oldfd);

函数功能:用来复制一个文件描述符;执行成功返回新的文件描述符,失败则返回-1;dup()函数返回的新的文件描述符是当前可用文件描述符中的最小值

         复制文件描述符,实质可理解为:fd句柄原本指向test.txt的文件描述结构体,dup()指向完毕后,new_fd(返回值)句柄也会指向test.txt文件描述结构体,所以对new_fd句柄所指的文件操作,等价于操作test.txt结构体

         dup2()与dup()的区别在于可以用newfd来指定新描述符数值,若newfd指向文件已经被打开,则将其关闭;若newfd等于oldfd,就不关闭newfd,newfd和oldfd共同指向同一份文件

         例:dup(3, 1)的含义为:newfd指向oldfd句柄指向的文件描述结构,即原本指向标准输出文件描述结构体的1指向了test.txt,使原本输出到显示器终端的信息流向test.txt文件中

你可能感兴趣的:(Linux,linux)