什么是标准输入,标准输出(stdin,stdout)?
要弄清什么是标准输入输出。首先需要弄懂什么是IO。
IO的I是Input的意思,O是output的意思。意味着输入和输出。

更确切的含义是
I:从外部设备输入到内存
O:从内存输出到外部设备

而标准输入和标准输出是干什么的?它们是用于IO的。

那么它们属于IO的哪个部分?
内存?还是外部设备?
答案显然是外部设备(逻辑上的外部设备,为什么?接着看)。

更具体的含义?
在linux操作系统中,外部设备用什么表示?是用文件。
linux中一切设备皆是文件!
因此标准输入和输出更具体的含义是文件。

它们是哪两个文件?
它们是/dev/stdin这个文件和/dev/stdout这个文件。
也就是说所谓的标准输入和标准输出其实就是两个linux下的文件。

linux的文件类型有:
1、普通文件2、字符设备文件3、块设备文4、目录文件
5、链接文件6、管道文件7、套接字文件

思考一下?它们是什么文件?它们在/dev目录下,它们是设备文件吗?
那么所谓的从标准输入读是什么意思?

逻辑上来看:
就是打开/dev/stdin这个文件,然后把这个文件里的内容读进来。

输出到标准输出是什么意思?
逻辑上来看:
就是打开/dev/stdout这个文件,然后把内容输出到这个文件里去。

为什么是从逻辑上来看?因为它们不是设备文件!!!
所以它们不代表一个设备。linux里一切皆是文件,设备是文件,但是文件不一定是设备!

那它们是什么文件?他们是链接文件。(可以用ls -l /dev来查看 l开头的就是链接文件。)

什么是链接文件?文件内容是另一个文件的地址的文件称为链接文件。

因此,打开、读或者写 /dev/stdin和/dev/stdout 实际上是打开、读或者写这两个文件存放的地址对应的设备文件。

明白它们是链接文件不是设备文件有什么用?
明白这一点才能知道重定向失效的原理。

参考文章:什么是标准输入,标准输出(stdin,stdout)

什么是标准输入,标准输出(stdin,stdout)相关推荐

  1. 什么是标准输入、标准输出(stdin、stdout)?

    原文地址:什么是标准输入.标准输出(stdin.stdout)? 要弄清什么是标准输入输出.首先需要弄懂什么是IO. IO 的 I 是 Input 的意思,O 是 output 的意思. 意味着输入和 ...

  2. linux终端模拟器stdin,linux输出·输入文件和标准输入 标准输出是什么意思啊

    满意答案 nono_yf 推荐于 2017.09.03 采纳率:55%    等级:11 已帮助:4087人 Unix/Linux/BSD 都有三个特别文件,分别 1)标准输入 即 STDIN , 在 ...

  3. 利用stdin stdout stderr及POSIX-linux机制重定向写日志

    利用stdin stdout stderr及POSIX-linux机制重定向写日志 由open返回的文件描述符一定是该进程尚未使用的最小描述符.由于程序启动时自动打开文件描述符0.1.2,因此第一次调 ...

  4. WorkerMan源码分析(resetStd方法,PHP中STDIN, STDOUT, STDERR的重定向)

    WorkerMan中work.php中 resetStd 方法中代码如下 public static function resetStd(){if (!static::$daemonize || st ...

  5. linux下的各个语言中stdin,stdout和stderr理解

    在linux中经常会看到stdin,stdout和stderr,这3个可以称为终端(Terminal)的标准输入(standard input),标准输出( standard out)和标准错误输出( ...

  6. Linux Shell 文件描述符 及 stdin stdout stderr 重定向

    Abstract: 1) Linux Shell 命令的标准输入.标准输出.标准错误,及其重定位: 2)Linux Shell 操作自定义文件描述符: 文件描述符是与文件相关联的一些整数,他们保持与已 ...

  7. stdin, stdout, stderr

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.pandas是什么? 二.使用步骤 1.引入库 2.读入数据 总结 前言 在通常情况下,Linux/UNIX每个程 ...

  8. linux 读取终端stdout,【Linux基础】linux下的stdin,stdout和stderr理解

    在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据流,也就是题目中所提到的这三个. 1.三个数据流默认是表现在用户终端上的 执行一个shell命令行时通常会自动打开三个标准文件 ...

  9. linux 进程 stdout,linux下的stdin,stdout和stderr理解和程序实例分析

    玩linux的时候经常会看到stdin,stdout和stderr,这3个可以称为终端(Terminal)的标准输入(standard input),标准输出( standard out)和标准错误输 ...

最新文章

  1. Spring Boot 搭建 ELK,这才是正确看日志的方式!
  2. python基础常用语句-python爬虫之python一条语句分析几个常用函数和概念
  3. l2高斯分布_L1和L2正则的区别,如何选择L1和L2正则?L1在0处不可导,怎么处理...
  4. 【下一代核心技术DevOps】:(三)私有代码库阿里云Git使用
  5. 【mysq】远程访问权限(允许远程连接)
  6. 基础10 多进程、协程(multiprocessing、greenlet、gevent、gevent.monkey、select、selector)...
  7. java peer_Java PeerConnection.getStats方法代码示例
  8. 一文读懂机器学习库graphLab
  9. 学习笔记 十八: kickstart
  10. 数据分析学习总结笔记09:文本分析
  11. matlab中方差分析的自由度,多因素方差分析的自由度
  12. AI:2020年6月24日北京智源大会演讲分享之强化学习专题论坛——11: 40-12: 10俞扬教授《更好的环境模型,更好的强化学习》
  13. 使用 .reg 文件操作注册表
  14. Session的钝化和活化(序列化和反序列化)
  15. Pikachu靶场-暴力破解
  16. 基于51单片机万年历
  17. Project0:小游戏
  18. 计算机图片数据传输图,电脑对电脑或手机传送文件图片的工具
  19. IAR工程某些文件字体改不过来
  20. 第168篇,中心点(扶摇生财思维)

热门文章

  1. Hsiaoyang: Google与站点地图Sitemap
  2. 恭喜我自己装上了Windows Server 2008 R2 和使用Windows Live Writer 写日志
  3. 医学院计算机社发展,医学院计算机教学创新思路.docx
  4. 计算出前一期间XXXX物料的期末结算
  5. 2016奥运男篮分组
  6. 销售收入科目确定VKOA
  7. ABAP性能优化之向内表添加纪录
  8. 把SAP里的负号放到前面来的函数
  9. 一封绝妙的情书 An Ingenious Love Letter
  10. MM模块部分名词解释