依赖的头文件

#include

函数定义

int dup(int oldfd);

int dup2(int oldfd, int newfd);

函数作用

dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。

如果两个文件描述符指向同一个file结构体,file status flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。

如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的file status flag和读写位置。

实战

需求:在代码中执行2次printf("hello linux\n"),前一次输入到world文件中,后一次输入到屏幕上

#include

#include

#include

#include

#include

void file_redirect()

{

//先备份现场

int outfd = dup(1);

//先做重定向

int fd = open("world", o_wronly|o_creat,0666);

//标准输出到重定向fd到对应的文件

dup2(fd, 1);

printf("hello linux\n");

//需要来一次刷新

fflush(stdout);

//需要恢复1,重新到标准输出

dup2(outfd, 1);

printf("hello linux\n");

}

int main(int argc, char* argv[])

{

file_redirect();

return 0;

}

linux中dup2函数,dup与dup2函数相关推荐

  1. 函数dup与dup2

    博客搬家,原地址:https://langzi989.github.io/2017/05/21/函数dup/ 函数原型 #include <unistd.h>int dup(int fd) ...

  2. Linux绘图函数与驱动,Linux中与驱动相关的ioctl函数

    一:    ioctl函数的作用 ioctl用于向设备发控制和配置命令 ,有些命令也需要读写一些数据,但这些数据是不能用read/write读写的,称为Out-of-band数据.也就是说,read/ ...

  3. 函数dup和dup2

    函数原型: #include<unistd.h> int dup(int oldfd);返回值:若成功,返回新的文件描述符:若出错,返回-1 参数: oldfd:要复制的文件描述符 dup ...

  4. linux中i2c的ioctl,write,read函数的使用

    一.ioctl函数的使用: 原型:struct ioctl(struct file *file,unsigned int cmd,unsigned long arg); cmd有I2C_SLAVE,I ...

  5. linux中C语言获取高精度时钟gettimeofday函数

    原文地址::https://blog.csdn.net/balingybj/article/details/48293817 相关文章 1.gettimeofday()函数的使用方法----https ...

  6. linux中strlen的用法,实现strlen()函数,strcmp()函数 const知识点

    实现strlen()函数,strcmp()函数 const知识点 发布时间:2020-08-03 05:49:13 来源:51CTO 阅读:576 作者:汇天下豪杰 1.strlen()函数的实现:# ...

  7. 摸了好久,终于把linux中i2c的ioctl,write,read函数的使用弄懂了

    ioctl函数的使用: 原型:struct ioctl(struct file *file,unsigned int cmd,unsigned long arg);  cmd有I2C_SLAVE,I2 ...

  8. linux 创建进程 execl,linux中进程的vfork()和execl()函数

    看我下面的程序,还有问题可以baidu hi我 #include #include #include #include int main(int argc, const char *argv[]) { ...

  9. linux存储--dup和dup2函数解析(十八)

    1.文件描述符在内核中数据结构 在具体说dup/dup2之前,我认为有必要先了解一下文件描述符在内核中的形态.一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell中运行一个 ...

最新文章

  1. BZOJ1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
  2. 一起学微软Power BI系列-使用技巧(3)Power BI安卓手机版安装与体验
  3. 谈谈AI的ToB市场,我的新书《B端产品经理修炼手册》正式出版
  4. Linux运行hadoop命令,将hadoop程序打成jar包,在linux下以命令行方式运行(例如单词计算程序)...
  5. 微软如何利用机器学习改进Win 10更新体验
  6. Flutter进阶—实现动画效果(二)
  7. Yahoo!用户体验与设计前副总裁推荐——《设计模式》
  8. 不用写代码,谷歌教你如何用2个小时做出只属于你的游戏。
  9. mysql 查询时间戳(TIMESTAMP)转成常用可读时间格式
  10. mysql 5.7.20免安装_Windows下MySQL 5.7.20 免安装版配置
  11. 绘制logo软件-AI(illustrator)
  12. 单耳蓝牙耳机怎么连接_蓝牙耳机怎么切换单耳
  13. Java从服务端下载Excel模板文件
  14. 更新至OSX 10.10后MBA外接网卡无法使用的解决
  15. uni-app上传图片base64
  16. 小伙伴们,给大家发红包喽!
  17. iOS 引导图的聚光灯效果代码实现
  18. Docker 镜像管理,显示本地镜像,查找镜像,删除镜像,镜像拉取,查看镜像的具体信息,镜像的导入和导出,将配置后的镜像commit成自己的镜像,docker history,等
  19. eclipse jee mars linux,【创建maven-web项目-eclipse-jee-mars-2-win32-x86_64-jdk1.8】
  20. 音乐播放器Android开发的目的,基于Android的手机音乐播放器的设计与开发

热门文章

  1. python数据分析综合案列--星巴克门店数据分析及可视化
  2. bash与csh下获取系统命令执行结果
  3. Arduino教程 模拟输入输出以及电机和舵机控制
  4. Mybatis奇淫技巧
  5. 基于CNN的乳腺肿瘤识别
  6. [2019.9 EOJ Monthly] B.定向越野 (贪心+模拟
  7. 星球作业(第四期)话题:关于startActivityForResult
  8. Python算法性能分析-时间复杂度
  9. “双接口(dual)”的接口模式
  10. 计算机英语一级考试试题,全国计算机一级考试试题题库及答案