程序出口处的printf flush

Xaq*_*aqq 12 c linux printf

我很想知道printf()当程序退出时函数的flush 如何工作.

我们来看下面的代码:

int main(int ac, char **av)
{
    printf("Hi");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如何printf()管理将其缓冲区刷新到stdout

我想这是平台依赖的,所以让我们采取Linux.

它可以使用gcc's 实现,__attribute__((dtor))但标准库将依赖于编译器.我认为这不是它的工作方式.

任何解释或文档链接表示赞赏.谢谢.

tro*_*foe 11

C运行时将注册atexit()处理程序以在exit()调用时刷新标准缓冲区.

看到这个解释.

  • +1,好点,_within main,return expr等同于exit(expr)._ (3认同)