是sprintf线程安全吗?

Jay*_*y D 8 c linux multithreading

是sprintf线程安全的?

//Global log buffer 
char logBuffer[20];

logStatus (char * status, int length)
{
  snprintf(logBuffer, 19, status);
  printf ("%s\n", logBuffer);
}
Run Code Online (Sandbox Code Playgroud)

该功能的线程安全性完全取决于snprintf/ 的线程安全性sprintf.

更新: 谢谢你的答案.我不介意,如果实际内容gts搞砸了.但是,当多个线程试图写入时,想要确认sprintf不会导致内存损坏/缓冲区溢出超过20个字节logBuffer?

Jon*_*ood 15

snprintf()在多个线程中使用没有问题.但是在这里你要写一个共享字符串缓冲区,我假设它是跨线程共享的.

所以你使用这个函数不是线程安全的.