V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mainlong
V2EX  ›  编程

C 语言 print 默认输出

  •  
  •   mainlong · 2018-12-11 00:10:35 +08:00 · 3027 次点击
    这是一个创建于 1935 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    print 函数,输出到显示器。

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

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

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

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

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


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

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


    重定向又是另一个话题了。
    在终端里敲命令,默认输出到终端窗口,如 grep >,把结果输出到另一个指定文件中去了。相当于 print 输出到指定文件了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1365 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:42 · PVG 01:42 · LAX 10:42 · JFK 13:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.