J'arrive à cette page parce que je pose aussi la même question. Voici ce que je lis des livres:
Programmation avancée dans l'environnement UNIX: deuxième édition
Section 10.6
La plupart des fonctions qui ne sont pas à la figure 10.4 (une liste des fonctions de rentrants sont manquants car (a) ils sont connus pour utiliser des structures de données statiques, (b) ils appellent malloc ou free, ou (c) ils font partie de la bibliothèque d'E/S standard .
L'interface de programmation Linux
Chapitre 21.1.2
Les fonctions peuvent également être non réentrants si elles utilisent des structures de données statiques pour leur comptabilité interne . Les exemples les plus évidents de telles fonctions sont les membres de la bibliothèque stdio (printf(), scanf(), et ainsi de suite), qui mettent à jour les données internes structures pour les E/S tamponnées.
Je suppose que c'est la mise en œuvre en fonction. Cela dépend aussi de la façon dont vous utilisez réellement snprintf (le tampon est essentiel). La réponse la plus sûre à la question devrait être «non».
Cette réponse est peut-être juste, mais ce n'est pas évident. La norme n'exige pas de reentrant 'snprintf' (ce qui est une exigence beaucoup plus forte que le simple thread-safe). Si la glibc le rend réentrant, cela dépasse les exigences de la norme. –