刚刚看 CPP 的一点想法,请大伙斧正
print 函数,输出到显示器。
print 函数基础定义就是输出参数到文件中,这种长期使用的东西,有最常用的输出文件,那就把这个最常用输出文件设定为默认输出,就是显示器。我没看 stdio.h 文件,里面应该可以改的,那么有些行业软件的话,可以修改 stdio.h 文件,修改其中的显示器为其他参数。
然后这个重定向>,其实就是普通输出到指定文件。 我看重定向,|和 linux 中的管道命令应该是一个意思。 我不知道重定向的历史起源,见识狭窄,在 print 函数输出这个问题上,我觉得应该没必要有这个东西,本来是基础参数,输出到显示器是默认参数。是不是借用了重定向方便解释呢?
1
pkookp8 2018-12-11 00:44:52 +08:00 via Android
虽然没看懂楼主在问什么,但是一切都是文件,标准输出就是文件,fd 等于 1,标准输入等于 0,标准错误是 2
程序内部重定向就是关了标准输出,重新打开一个文件,自然等于 1 >>和|是 shell 完成的 要改可以,把 libc 改了(也可能在别的库),你的程序才能识别 ,或者改内核 |
2
misaka19000 2018-12-11 00:46:39 +08:00 via Android
感觉你说的好混乱啊。。。
输出从系统调用的层面来说,输出到磁盘文件和输出到标准输出,它们只是 fd 不一样而已 至于 重定向 我想只是 shell 把前一个进程的标准输出写入了指定文件而已 |
3
KeepPro 2018-12-11 00:54:25 +08:00
按 POSIX 惯例,0 是标准输入,1 是标准输出,2 是错误输出。
一般这个都是在<unistd.h>里面有定义的符号常量。 具体你可以参考下 APUE 这本书的第三章 IO。 |
4
yksoft1 2018-12-11 08:03:30 +08:00
stdio.h 里面没有实现,实现都在 CRT 甚至系统调用里面。
|
5
mainlong OP @pkookp8
@misaka19000 @KeepPro 看懂了,输出到文件和显示器都是一类,只是 fd 不一样。只是我把输出到显示器看成默认值(类似函数的默认参数这类的),然后在不同的场合(系统移植?)下,这个默认输出可能就不是显示器可以改成其他的。 |
6
pkookp8 2018-12-12 00:22:58 +08:00 via Android
|
7
mainlong OP 看到 python 的视频,发现和我想的不谋而合,默认输出是标准输出也就是终端窗口,也可以指定输出到其他文件 /流。
https://i.loli.net/2019/06/04/5cf67b737746873399.jpg 重定向又是另一个话题了。 在终端里敲命令,默认输出到终端窗口,如 grep >,把结果输出到另一个指定文件中去了。相当于 print 输出到指定文件了。 |