代码之家  ›  专栏  ›  技术社区  ›  Shubham

是stdin、stdout和stderr文件吗?

  •  2
  • Shubham  · 技术社区  · 15 年前

    有人告诉我,无论何时C++程序运行三个文件STDIN,STDUT和STDRR都打开,他在他的支持下给出了这个链接。

    http://tldp.org/LDP/abs/html/io-redirection.html

    但我不知道这些流是否真的是文件?

    有人能澄清一下吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Mads Elvheim Mads Elvheim    15 年前

    在POSIX系统上,流是特殊的文件描述符。Windows有自己的错误。。但它们也是文件描述符。Windows上的特殊文件的例子有标准流stdout、stdin和stderr,以及可以用OpenFile()打开的串口COMn。在Linux上,在/proc和/dev下可以找到特殊文件。/proc/cpuinfo将读回有关CPU的信息。/dev/sdX是物理磁盘等的句柄。

    不幸的是,Microsoft Windows不能处理这个级别的文件描述符。我希望Windows更像POSIX。

        2
  •  3
  •   Federico klez Culloca    15 年前

    如果你打字 man stdio

    #include <stdio.h>
    
     FILE *stdin;
     FILE *stdout;
     FILE *stderr;
    

    所以它们真的是文件。

    /dev/stdin , /dev/stdout /dev/stderr

        3
  •  2
  •   sje397    15 年前

    他们属于 FILE*

    cat something.txt | myprog
    

    …然后myprog可以读取something.txt (cat程序的输出)通过读取标准数据。