printf引发死锁 printf函数执行的大体步骤如下图所示,当printf函数在执行过程中,它会请求并获得一些系统锁。这时候若是被一个信号处理程序打断,如右图所示,并信号处理程序中执行printf函数,那么就没有办法获取到该锁,也因此便发生了死锁。 以上便是printf函数会导致死锁问题的原因。 printf(fprintf,sprintf)实现了缓冲IO,因此需要加锁才能共享缓冲区,如下图所示。 这也是printf函数执行过程中需要获取锁的原因。