在重定向之前保存默认文件描述符,在向text文件写入后再还原STDOUT_FILENO描述符

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
int main(int argc, char* argv[])
{int sfd,ret;sfd=dup(STDOUT_FILENO);  //保存屏幕输出的文件描述符,用于恢复int fd=open("text.txt", O_CREAT|O_RDWR|O_TRUNC, S_IRUSR|S_IWUSR);if(fd < 0){printf("Open Error!\n");return 0;}printf("-------\n");sleep(1);dup2(fd,STDOUT_FILENO);  //修改默认屏幕输出指向printf("write to text by STDOUT_FILENO\n");dup2(sfd,STDOUT_FILENO);  // 还原屏幕输出默认文件描述符指向printf("STDOUT_FILENO come back\n");char buf[1000];int n;while((n=read(STDIN_FILENO, buf,1000)) > 0)  //接受键盘输入,并将其存入buf所指向的缓存中   {if(write(fd, buf, n)<n)    //将buf所指向的缓存区的n个字节的数据写入到由文件描述符fd2所指示的文件中{printf("Write Error!!\n");return 0;}}return 0;
}

STDOUT_FILENO文件描述符的重定向及还原 (dup2函数用法) Linux系统编程相关推荐

  1. linux 反弹shell(一)文件描述符与重定向

    0X00 前言 由于在反弹shell的过程中有一些非常精简的语句,但是一直没有深入理解,只是作为一个伸手党/搬运工,于是下定决心要将其弄明白,而这里面最难的也就是文件描述符和重定向的部分,因此我特地写 ...

  2. 玩转linux文件描述符和重定向,玩转Linux文件描述符和重定向

    本文介绍linux中文件描述符与重定向的相关知识,文件描述符是与文件输入.输出相关联的整数,它们用来跟踪已打开的文件.有需要的朋友参考下. 原文出处: linux下的文件描述符是与文件输入.输出相关联 ...

  3. 玩转Linux文件描述符和重定向

    本文介绍linux中文件描述符与重定向的相关知识,文件描述符是与文件输入.输出相关联的整数,它们用来跟踪已打开的文件.有需要的朋友参考下. 原文出处:http://www.jbxue.com/arti ...

  4. 【Linux系统编程】文件描述符的复制dup()和dup2()

    00. 目录 文章目录 00. 目录 01. 文件描述符复制概述 02. 常用函数 2.1 dup函数 2.2 dup2函数 03. 案例实战 3.1 dup示例 3.2 dup2示例 04. 附录 ...

  5. Linux 基础I/O :文件描述符,重定向,文件系统,软链接和硬链接,动态库和静态库

    文件描述符 重定向 文件系统 软链接和硬链接 动态库和静态库 文件描述符 上面两个接口分别是c语言的fread接口和linux的read接口,当我们在使用的时,可能会有疑问,为什么linux的io接口 ...

  6. 【Linux】文件描述符与重定向

    重定向符号 符号 描述 > 输出重定向到一个文件或设备 覆盖原来的文件 >! 输出重定向到一个文件或设备 强制覆盖原来的文件 >> 输出重定向到一个文件或设备 追加原来的文件 ...

  7. Shell脚本攻略04-玩转文件描述符及重定向

    概述 文件描述符是与文件输入.输出相关联的整数.它们用来跟踪已打开的文件. 最常见的文件描述符是stdin. stdout和stderr. 我们甚至可以将某个文件描述符的内容重定向到另一个文件描述符中 ...

  8. 页描述符 linux,有关Crontab导致Linux文件描述符...-探讨:crond 引发大量sendmail进...-linux下的ulimit命令用法解析(图文)_169IT.COM...

    一,遇到的问题 系统中的定时任务,过一段时间之后,不能运行. 通过系统命令查看到系统有大量sendmail进程,导致文件描述符耗尽.以下主要通过分析整个处理过程,供大家参考. 二,处理过程 分析步骤如 ...

  9. linux Dup2 网络转发,Linux系统编程:dup2()重定向

    对于Dup2 的理解: 源代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 #define MSGSIZE 20 8 #de ...

最新文章

  1. 普通幕僚:Ownership意识不足的几种症状
  2. 生活智慧:奇特的人生法则
  3. iOS开发之自定义View
  4. spring boot pom配置_125 SpringCloud服务配置中心
  5. 浅析ASP.NET的Page.IsPostBack 属性http://www.sina.com.cn 2008年05月06日 11:33 IT168.com
  6. 把char*转换为wchar_t*
  7. oracle数据泵还原命令,Oracle Linux环境中使用数据泵的形式还原Oracle数据库
  8. 一步一步配置aspnetdb数据库
  9. 四、卫星定位《苹果iOS实例编程入门教程》
  10. Kali Linux 2016.2初体验
  11. 单板计算机作用上位机,SCB-1单板机的基本操作
  12. 我只是追个直播,结果被拉进大咖们的群面对面群聊……
  13. 【转】JavaScript中的this关键字使用的四种调用模式
  14. mysql集群集成springboot_springboot配置数据库包括集群下 配置
  15. 番茄花园GHOST XP SP3 V1.61 Final纪念版 http://www.ghost2.cn
  16. iOS制作微信(weChat)支付SDK过程
  17. OFF文件格式_拔剑-浆糊的传说_新浪博客
  18. phaser3场景中的图片缩放scale
  19. 编程彩虹c语言,c – 如何渲染彩虹光谱?
  20. 基于Matlab答题卡图像检测识别研究

热门文章

  1. 如何使用useradd命令在Linux中创建用户
  2. 背包问题动态规划解法
  3. Java 最好用的反编译神器 - IntelliJ IDEA
  4. Web基础知识之TCP_IP协议
  5. ubuntu16.04+realsense D435I +ros kinetic+ ORB-SLAM2
  6. python自动化测试错误代码解释,来人救一下啊
  7. 计算机房的能耗指标,机房能耗管理
  8. 移动端APP测试常见面试题精析
  9. python 线程池与队列简单应用
  10. 关于javax.servlet.*导包错误的解决方案