本文主要是介绍[Linux系统编程]文件重定向dup和dup2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.dup和dup2 实现重定向
1.文件描述符表
操作系统在管理文件时,会管理一张文件描述符表,根据打开的文件,分配一个文件描述符(int),根据该文件描述符,锁定指向该文件的指针,从而索取文件。
2.重定向
在linux中,可以使用**> 和 >>命令**来实现重定向,将控制台内容输入到文件中,它的具体实现就是dup函数。
实际操作中,用到的最多是dup2(int oldfd ,int newfd),以文件描述符为参数,返回被重定向的那个文件描述符。
重定向的原理就是将一个文件描述符的指针重新定位,不再指向它原本的指针,而是重定位到另一个文件。
通过重定向操作后,对进行重定向的这个文件描述符进行的操作,就成为了对它重定向的那个文件的操作。
>和>> 的原理就是将 输出设备文件 重定位到 指定文件,这样就实现了对指定文件的输入操作。
二.使用fcntl 实现重定向
fcntl函数
fd:文件描述符,cmd是宏命令(F_SETFL,F_GETFL等命令), 根据第二个参数,也可以具有第三个参数。
使用宏命令 F_DUPFD作为第二参数,第三参数写入一个文件描述符
fcntl(fd , F_DUPFD , nfd)
此函数表示将nfd文件描述符重定向到fd指向的那个文件
这篇关于[Linux系统编程]文件重定向dup和dup2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!