关于“文件描述符”和 “源” 和 “实体文件”之间的关系

来源:11-11 案例:重定向标准输入输出流

十三山入秋

2021-01-09

老师您好,我又来了:
1.我把这节课的东西,画了个流程,这个图对吗

2.还有个问题,就是saved_stdout_no始终是和控制台实体绑在一起,是不是可以通过saved_stdout_no绑定某个类似FILE *file 或 stdout级别的 东西 来向控制台写东西?

saved_stdout_no = dup(fileno(stdout));
saved_stdout_no 的结果总是3
fileno(stdout)的结果总是1

文件描述符,是一个int;
stdout的话,和FILE *file是一个级别的,应该是属于一种实体文件在内存中的打开状态的对象;
控制台也能算是实体文件的吧?

我们是不是能够把save_stdout_no通过某种方式和 stdout/FILE *file这种同级别类型的对象绑到一起,然后用该对象 向控制台写东西

图片描述

写回答

3回答

bennyhuo

2021-01-09

1 对的

0
1
十三山入秋
非常感谢!
2021-01-09
共1条回复

bennyhuo

2021-01-09

只要有文件描述符,就可以通过win或者linux底层的io api 来写入文件,例如你可以搜一下 write函数

0
1
十三山入秋
哦哦,好的
2021-01-09
共1条回复

bennyhuo

2021-01-09

文件描述符是操作系统底层的io api 当中的概念,标准输出的值确实就是1,但复制的不一定总是3。

0
3
十三山入秋
回复
bennyhuo
噢噢,
2021-01-09
共3条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程