[Ubuntu-zh] 请问一个linux标准输入标准输出问题

Ryan Feng odayfans在gmail.com
星期一 六月 11 20:06:02 UTC 2012


On Mon, Jun 11, 2012 at 05:44:14PM +0800, yeji wrote:
> User-Agent: Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120430
>  Thunderbird/12.0.1
> Date: Mon, 11 Jun 2012 17:44:14 +0800
> To: ubuntu-zh在lists.ubuntu.com
> From: yeji <yuehuarushui2012在gmail.com>
> Subject: [Ubuntu-zh]
>  请问一个linux标准输入标准输出问题
> 
> 在学习linux的时候,我遇到以下几个问题不懂,请大家指点迷津
> 1、标准输入、输出缺省情况下对应键盘,显示器,那么标准错误缺省情况下,错
> 误信息是输出到什么地方?
程序接受输入并给出输出:
Input -> Code -> Output
输入输出并不是对应键盘显示器,也没有默认绑定到哪的约定,只是在shell下,shell会启动
一个新的子进程,并捕获它的stdout和stderr, 然后合并输出到终端
但很多情况下stdout和stderr都不会输出到终端,
比如很多程序会有自己的log系统。
> 2、在默认的情况下,unix为每个进程提供3个预定义的文件描述符,默认的文件描
> 述符是0代表标准输入、1代表标准输出、2代表标准错误。那么 向语句
> calculate
> 8>results还是标准输出吗?results是文件名。如果不是的话,那么如何理解
> sort1>results是标准输出,这里也重定
> 向了啊,不是缺省的显示屏,不是的原因
> 是什么?如果是的话,那么如何理解1代表标准输出?这里的标准输入与标准输
> 出、标准错误与文件描述符有什么 联系?
> 谢谢
推荐先阅读:http://en.wikipedia.org/wiki/File_descriptor
首先要知道'文件'读写需要维护一系列的记录,FD是这些记录的一个标号,
每个进程都会有个文件描述符表,表的索引是0,1,2... ,也就是FD,也就是对应stdout,
stdin,stderr,默认操作系统启动一个进程时会自动打开这三个'文件',
8虽然是个合法的FD,但表里不一定有记录。
而且这是个shell的问题, shell只是提供了一个语法来支持重定向 sort 2>
result合法并不意味着 sort 100> result就合法。
-------------- 下一部分 --------------
A non-text attachment was scrubbed...
Name: 不可用
Type: application/pgp-signature
Size: 275 bytes
Desc: 不可用
URL: <https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20120611/be638b22/attachment.pgp>


关于邮件列表 ubuntu-zh 的更多信息