免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6648 | 回复: 11
打印 上一主题 下一主题

[文件目录] 求教 stdin、stdout FD0、FD1 理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-30 19:11 |只看该作者 |倒序浏览
对linux中文件和I/O的一知半解导致的混乱...

1、我们说的FD1、FD0是和stdout、stdin完全等价呢 还是 只是默认情况下 FD0从stdin读取、FD1输出到stdout呢?
2、stdin和键盘输入、stdout和屏幕输出的关系...

说白了就是下面两个小图的区别?到底是应该按照哪种方式理解呢?



        我的理解是:   1表示正确消息输出,默认是送到stdout,而stdout默认是送到屏幕。然后1可以重定向到其他,比如1>&9,这样就不一定送到stdout;同样stdout可以重定向到其他,比如送到文件或者管道符文件...,这样的话也不一定送到屏幕。
1 ---  --- stdout --- --- 屏幕
       |                    |
   other              other



    或者是:?                1(stdout) ---  --- 屏幕
                                                         |
                                                     other(|文件、文件、其他&n指向的文件...)


        


论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2012-12-30 19:42 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2012-12-30 20:36 |只看该作者
回复 2# reyleon


    我觉得这个里边本身就没描述清楚啊。

“默认情况下始终有3个"文件"处于打开状态, stdin(键盘), stdout(屏幕), 和stderr(错误消息输出到屏幕上). 这3个文件和其他打开的文件都可以被重定向. 对于重定向简单的解释就是捕捉一个文件, 命令, 程序, 脚本, 或者是脚本中的代码块(请参考例子 3-1和例子 3-2)的输出, 然后将这些输出作为输入发送到另一个文件, 命令, 程序, 或脚本中. ”

如果stdin、stdout、stderr分别是三个stream文件而0、1、2分别是其描述符的话。
那"stdin(键盘), stdout(屏幕), 和stderr(错误消息输出到屏幕上)"是指stdin、stdout和stderr等同于 键盘、屏幕和错误消息输出到屏幕上? 那这三个文件内容的重定向又作何理解呢?
还是 stdin、stdout 和stderr在默认情况下的输出/输入方式为 键盘、屏幕 和 错误消息输出到屏幕上? 这么理解才好点吧?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2012-12-31 08:16 |只看该作者
回复 1# yonka


    文件是静态的,文件描述符是动态的,打开文件时系统才为其分配FD。

   系统通过FD来操作文件。

   stdin,stdout,stderr的FD分别为0,1,2。这三个文件默认关联到终端,也就是说stdin关联到键盘,stdout...


   重定向stdin就是重定向FD0,……

   

论坛徽章:
0
5 [报告]
发表于 2012-12-31 10:17 |只看该作者
回复 4# blackold


    "回复 1# yonka


    文件是静态的,文件描述符是动态的,打开文件时系统才为其分配FD。

   系统通过FD来操作文件。

   stdin,stdout,stderr的FD分别为0,1,2。这三个文件默认关联到终端,也就是说stdin关联到键盘,stdout...


   重定向stdin就是重定向FD0,……"


"打开文件时系统才为其分配FD"   
    那这几个文件是否有可能分配的FD不是0、1、2呢? 也就是说这个是固定的还是只是默认?

“这三个文件默认关联到终端,也就是说stdin关联到键盘,stdout...”  
    这三个文件与终端的关联是固定的还是默认如此但可以更改呢?

谢谢

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2012-12-31 10:19 |只看该作者
回复 5# yonka


    默认的啊。

论坛徽章:
0
7 [报告]
发表于 2012-12-31 10:25 |只看该作者
回复 6# blackold


   
"打开文件时系统才为其分配FD"   
    那这几个文件是否有可能分配的FD不是0、1、2呢? 也就是说这个是固定的还是只是默认?

“这三个文件默认关联到终端,也就是说stdin关联到键盘,stdout...”  
    这三个文件与终端的关联是固定的还是默认如此但可以更改呢?

鸟哥回复的太简练了...
是都是默认还是只是第二个问题是默认第一个则是固定的?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
8 [报告]
发表于 2012-12-31 10:31 |只看该作者
完全等价的
stdin是fd0的英文名字,中文名字是"标准输入"都是一码事

另外建议莫钻牛角尖,不要纠结于"为什么"1+1=2,习惯了这就不是问题了,除非你是爱因斯坦

论坛徽章:
0
9 [报告]
发表于 2012-12-31 11:10 |只看该作者
回复 8# waker


    其实我不是在纠结1+1是不是=2呢,而是纠结1+1等于几。

如果按照我之前的理解,1不一定等于stdout的话,那么1还可以输出到其他的文件...(而不是stdout)



论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
10 [报告]
发表于 2012-12-31 11:12 |只看该作者
1一定等于stdout
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP