Ich komme auf diese Seite, weil ich auch die gleiche Frage stelle. Hier ist, was ich von Bücher zu lesen:
Programmierung für Fortgeschrittene in der UNIX-Umgebung: Zweite Ausgabe
Abschnitt 10.6
Die meisten Funktionen, die nicht in Abbildung 10.4 (eine Liste der einspringenden Funktionen) fehlen, weil (a) sie statische Datenstrukturen verwenden, (b) sie malloc oder free aufrufen, oder (c) sie Teil der Standard-E/A-Bibliothek sind.
Die Linux Programming Interface
Kapitel 21.1.2
Funktionen auch nonreentrant sein können, wenn sie für ihre interne Buchführung statische Datenstrukturen verwenden. Die offensichtlichsten Beispiele für solche Funktionen sind die Mitglieder der stdio-Bibliothek (printf(), scanf() usw.), die interne Daten Strukturen für gepufferte E/A aktualisieren.
Ich denke, es ist Umsetzung abhängig. Es hängt auch davon ab, wie Sie snprintf tatsächlich verwenden (der Puffer ist wichtig). Die sicherste Antwort auf die Frage sollte "Nein" sein.
Diese Antwort ist möglicherweise richtig, aber es ist nicht offensichtlich. Der Standard erfordert nicht, dass snprintf reentrant ist (was eine viel stärkere Anforderung als nur thread-safe ist). Wenn glibc es reentrant macht, geht das über die Anforderungen des Standards hinaus. –