参考博客:https://blog.csdn.net/qq_26093511/article/details/53255970

参考博客:https://blog.csdn.net/db199410/article/details/52335450#commentBox

1.要解决的问题

通过复制文件描述符来实现文件重定向问题。

2.实现代码

2.代码输出

按照原来的想法,运行程序之后应该会在屏幕终端显示字符数组中的数据,但是实际上却什么都没有显示;

3.错误原因

没有正确理解缓存区的概念。

缓存区详细介绍参考博客:https://blog.csdn.net/db199410/article/details/52335450#commentBox

我自己总结的观点:在重定向的过程中,write()系统调用将数据写入STDOUT缓存区,如果不使用换行符或者缓存区满的时候,缓存区中的数据是不会打印到屏幕终端的。

4:解决方法

在字符串数组后面加上一个\n刷新缓存区即可在屏幕上得到字符数组的值。

5.存在的问题

如果数据在缓存区,那么使用fflush和正常关闭文件,也能够刷新缓存区,让数据打印到屏幕终端,实际上却没有?求解决?(加fflush的代码:在close(fd)前面加一句fflush(stdout))

求看到问题的小伙伴,如果看到能够解决,请给出你宝贵的意见,谢谢!

使用dup2实现重定向到屏幕终端遇到问题相关推荐

  1. Linux系统编程22:基础IO之掌握重定向的本质和使用dup2完成重定向

    文章目录 (1)总结 (2)使用系统调用dup2完成重定向 (1)总结 从讲文件描述符开始,我们就引入了重定向的概念.读到这里,大家应该能够明白,重定向产生的原因就是文件描述符在分配时趋向于数值小的, ...

  2. 嵌入式串口打印信息重定向到当前终端界面

    转至 https://blog.csdn.net/wuquan_1230/article/details/105782687 概述 在嵌入式Linux系统中,有时通过远程(telnet或者ssh)登录 ...

  3. linux dup2实现重定向,dup/dup2输出重定向

    函数原型:#include int dup(int oldfd); int dup2(int oldfd,int newfd); dup用来复制oldfd所指的文件描述符.但复制成功时返回最小的尚未被 ...

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

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

  5. dup, dup2, 重定向恢复

    做Shell lab的时候要求完成重定向以及恢复,这里记录一下相关知识 #include <unistd.h> int dup(int oldfd); dup用来复制参数oldfd所指的文 ...

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

    在重定向之前保存默认文件描述符,在向text文件写入后再还原STDOUT_FILENO描述符 #include<stdio.h> #include<stdlib.h> #inc ...

  7. dup、dup2实现文件描述符重定向(标准输入、标准输出、标准错误输出)

    目录 dup函数 dup2函数 重定向标准输入 重定向标准输出 重定向标准错误输出 重定向恢复 总结 在前文中,可以知道,文件描述符实际上是指向文件表项的指针数组索引,也就相当于每个文件描述符都对应一 ...

  8. linux 重定向_Unix/Linux编程实践之IO重定向和管道

    I/O重定向的原理模型 ls > test.file是如何工作的?shell是如何告诉程序把结果输出到文件,而不是屏幕? 在who | sort > user.file中,shell是如何 ...

  9. Unix的标准I/O与重定向的若干概念解析

    标准I/O与重定向的若干概念 3个标准文件描述符 所有的Unix工具都使用文件描述符0.1和2.如下图所示,标准输入文件的描述符是0,标准输出的文件描述符是1,标准错误输出的文件描述符则是2.Unix ...

最新文章

  1. 树莓派:关于linux内核
  2. 怎么查询linux中的组密码,linux查看用户组中的用户
  3. 【读书笔记】基础博弈知识小结
  4. 【2012百度之星/资格赛】C: 易手机的套餐
  5. ubtunu打开firefox_如何在Firefox(在Lubuntu中)中打开“apt”链接?
  6. vue项目中如何引入ElementUI
  7. linux下访问西门子S7,Siemens SIMATIC S7-1200 CPU开放重定向漏洞(CVE-2015-1048)
  8. mysql数据库校对_mysql数据库校对原则
  9. php 类 private,有关php类的private属性继承问题详解
  10. TCP/IP(五)传输层之细说TCP的三次握手和四次挥手
  11. Intellij IDEA 安装插件 报 ‘plugin xxxx is incompatible‘ 解决方案
  12. mysql 判断大小_《fantasy系列》高性能mysql(一)
  13. windows 安装 mongodb
  14. 有效删除Win10英语(美式键盘)输入法
  15. sort函数(c语言排序)
  16. 阿拉伯数字 - 书法
  17. python作诗_用Python作诗,生活仍有诗和远方
  18. 聚石塔服务器 微信,聚石塔云服务器
  19. 古代帝王有哪些“恩爱夫妻”?
  20. oracle锁表语句执行提示无法终止当前对话_ORACLE LOCK TABLE 无法锁定表?

热门文章

  1. java IO流小结
  2. 【Spring】入门HelloWorld
  3. Android 上下文菜单(Context Menu)
  4. css3中的background
  5. Web工程师必备的43款可视化工具
  6. 解决SimpleButton被移除后保持OVER状态
  7. vba将select的值直接赋给变量
  8. mysql数据库version版本控制_MySQL数据库版本控制
  9. 定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱
  10. mac 配置java adb环境_MAC 配置android adb命令的环境变量