C stdin、stdout、stderr是如何关闭的?
退出程序时,这些C stdin、stdout、stderr是如何关闭的?,c,C,退出程序时,这些文件*对象如何关闭和释放?来自C99§7.20.4.3/3: 接下来,将刷新所有具有未写入缓冲数据的开放流,all 开放流是封闭的,所有文件都是由tmpfile函数创建的 被移除 (与C99对齐)更好地说明了这一点: 然后,exit()函数应使用未写入的 缓冲数据并关闭所有打开的流 它们由自动链接到您的程序的C运行时代码关闭-调用main()函数的代码在main()返回后也会调用exit()。这是否意味着它会关闭用户可能打开的任何其他流?它是怎么知道这些的?@Paul它知道,因为
文件*
对象如何关闭和释放?来自C99§7.20.4.3/3:
接下来,将刷新所有具有未写入缓冲数据的开放流,all
开放流是封闭的,所有文件都是由tmpfile函数创建的
被移除
(与C99对齐)更好地说明了这一点:
然后,exit()函数应使用未写入的
缓冲数据并关闭所有打开的流
它们由自动链接到您的程序的C运行时代码关闭-调用main()函数的代码在main()返回后也会调用exit()。这是否意味着它会关闭用户可能打开的任何其他流?它是怎么知道这些的?@Paul它知道,因为stdio自己记账
fopen
的作用不仅仅是返回文件*
。