sprintf
是线程安全的吗?
//Global log buffer
char logBuffer[20];
logStatus (char * status, int length)
{
snprintf(logBuffer, 19, status);
printf ("%s\n", logBuffer);
}
这个函数的线程安全性完全取决于
snprintf
/sprintf
的线程安全性。更新: 感谢您的回答。 如果实际内容混乱了,我不介意。但是想确认当多个线程尝试写入
logBuffer
时,sprintf
不会导致内存损坏/缓冲区溢出超过20个字节的情况。
printf("%.19s\n", status);
。 - Michael Burr