【发布时间】:2018-05-08 14:04:18
【问题描述】:
问题
为什么二进制文件中的 stdout 变量会链接到 libc 地址?
这个特定的 libc 地址是什么?
【问题讨论】:
-
你认为它应该在哪里?这是 libc 提供的东西。这是
FILE*。究竟是什么,是一个实现细节。 -
我希望 stdout FILE* 保存在二进制文件的变量中,因为它不是每个二进制文件都相同,还是我错了?
-
我的意思是,如果您在两个不同的终端中启动二进制文件,它们是否具有相同的标准输出?所以它不应该在全局范围内位于 libc 中,因为那样两者都将具有相同的标准输出 @Jester
-
就 libc 而言,它们是相同的标准输出。在类 unix 系统上,stdio 的东西最终会使用文件描述符,stdout 是
1。所以FILE*也可以相同。差异由操作系统本身处理,因为它为每个进程维护一个打开的文件表。