[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指向的那个文件
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值