【Linux】 文件重定向

了解重定向

首先我们关闭文件描述符1,看下面代码:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main()
{
	close(1);
	int fd=open("myfile",O_WRONLY|O_CREAT,00644);
	if(fd<0)
	{
		perror("open");
		return 1;
	}
	printf("fd:%d\n",fd);
	fflush(stdout);
	close(fd);
	return 0;
}

在这里插入图片描述
此时我们发现,本应该输出在显示器上的内容竟然输出到了文件myfile 中,并显示fd=1,这种现象我们称为重定向。

所以 重定向的本质是 通过改变文件描述符(文件指针)指向的对象,从而改变输出方向

重定向的类型

1、> 输出重定向

具体操作:关闭fd[1],紧接着创建一个新文件(O_WRONLY | O_CREAT),则新文件被分配的文件描述符fd=1,此时就完成了输出重定向。

2、>> 追加重定向

具体操作:关闭fd[1],紧接着打开要追加文件(O_WRONLY | O_APPEND),此时就完成了追加重定向。

3、< 输入重定向

具体操作:关闭fd[0],再打开一个新文件,即可以通过该文件将内容写到显示器上。

dup2 系统调用

dup2 主要用于强制重定向,将fd[1] 即标准输出中的内容定向到指定位置。
函数原型如下:

#include <unistd.h>
int dup2(int oldfd,int newfd);

用法:这里newfd 一定是1

dup2(fd,1)
等效于: close (oldfd); fcntl(oldfd,F_DUPFD,newfd);

这里newfd拷贝了oldfd的指针地址,所以二者共享同一文件表项,且内容是oldfd指向的文件表。

文件重定向的内容博主就讲到这里啦,有瑕疵的地方大家可以留言哦~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值