请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

老师您好,我又来了:
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回答

1 对的

0 回复 有任何疑惑可以回复我~
  • 提问者 十三山入秋 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-01-09 16:50:10
bennyhuo 2021-01-09 16:48:45

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

0 回复 有任何疑惑可以回复我~
bennyhuo 2021-01-09 16:47:54

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

0 回复 有任何疑惑可以回复我~
  • 提问者 十三山入秋 #1
    哦,嗯,总之应该是不同的数字,是吧
    这里做了几遍,都是3,可能是巧合
    回复 有任何疑惑可以回复我~ 2021-01-09 16:51:43
  • bennyhuo 回复 提问者 十三山入秋 #2
    对,你中间使用open函数打开几个别的文件应该就不一样了
    回复 有任何疑惑可以回复我~ 2021-01-09 19:29:07
  • 提问者 十三山入秋 回复 bennyhuo #3
    噢噢,
    回复 有任何疑惑可以回复我~ 2021-01-09 19:37:54
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信