mainlong
V2EX  ›  编程

C 语言 print 默认输出

  •  
  •   mainlong · Dec 11, 2018 · 3524 views
    This topic created in 2740 days ago, the information mentioned may be changed or developed.

    刚刚看 CPP 的一点想法,请大伙斧正

    print 函数,输出到显示器。

    print 函数基础定义就是输出参数到文件中,这种长期使用的东西,有最常用的输出文件,那就把这个最常用输出文件设定为默认输出,就是显示器。我没看 stdio.h 文件,里面应该可以改的,那么有些行业软件的话,可以修改 stdio.h 文件,修改其中的显示器为其他参数。

    然后这个重定向>,其实就是普通输出到指定文件。 我看重定向,|和 linux 中的管道命令应该是一个意思。 我不知道重定向的历史起源,见识狭窄,在 print 函数输出这个问题上,我觉得应该没必要有这个东西,本来是基础参数,输出到显示器是默认参数。是不是借用了重定向方便解释呢?

    7 replies    2019-06-04 22:16:40 +08:00
    pkookp8
        1
    pkookp8  
       Dec 11, 2018 via Android
    虽然没看懂楼主在问什么,但是一切都是文件,标准输出就是文件,fd 等于 1,标准输入等于 0,标准错误是 2
    程序内部重定向就是关了标准输出,重新打开一个文件,自然等于 1
    >>和|是 shell 完成的
    要改可以,把 libc 改了(也可能在别的库),你的程序才能识别
    ,或者改内核
    misaka19000
        2
    misaka19000  
       Dec 11, 2018 via Android
    感觉你说的好混乱啊。。。

    输出从系统调用的层面来说,输出到磁盘文件和输出到标准输出,它们只是 fd 不一样而已

    至于 重定向 我想只是 shell 把前一个进程的标准输出写入了指定文件而已
    KeepPro
        3
    KeepPro  
       Dec 11, 2018
    按 POSIX 惯例,0 是标准输入,1 是标准输出,2 是错误输出。
    一般这个都是在<unistd.h>里面有定义的符号常量。
    具体你可以参考下 APUE 这本书的第三章 IO。
    yksoft1
        4
    yksoft1  
       Dec 11, 2018
    stdio.h 里面没有实现,实现都在 CRT 甚至系统调用里面。
    mainlong
        5
    mainlong  
    OP
       Dec 11, 2018
    @pkookp8
    @misaka19000
    @KeepPro


    看懂了,输出到文件和显示器都是一类,只是 fd 不一样。只是我把输出到显示器看成默认值(类似函数的默认参数这类的),然后在不同的场合(系统移植?)下,这个默认输出可能就不是显示器可以改成其他的。
    pkookp8
        6
    pkookp8  
       Dec 12, 2018 via Android
    @mainlong 0.1.2 这三个是约定俗成的,除非你魔改。
    要改可以
    1.console 驱动
    2.内核 open 函数
    3.应用层定义
    但没必要,谁移植也不会改这个
    mainlong
        7
    mainlong  
    OP
       Jun 4, 2019
    看到 python 的视频,发现和我想的不谋而合,默认输出是标准输出也就是终端窗口,也可以指定输出到其他文件 /流。

    https://i.loli.net/2019/06/04/5cf67b737746873399.jpg


    重定向又是另一个话题了。
    在终端里敲命令,默认输出到终端窗口,如 grep >,把结果输出到另一个指定文件中去了。相当于 print 输出到指定文件了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4586 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 09:55 · PVG 17:55 · LAX 02:55 · JFK 05:55
    ♥ Do have faith in what you're doing.