В разделе UNIX® System Threads Reference под заголовком «Потоковая безопасность» список функций «не гарантируется нитью безопасности во всех UNIX-системах». Функция scandir() отсутствует в этом списке, в то время как readdir() появляется в списке.Действительно ли скандир поистине безопасен?
Однако glibc source для scandir() явно, кажется, вызывает readdir(), а не потокобезопасный readdir_r(). Так был scandir() пропущен из списка по какой-то другой причине, или это потокобезопасно по какой-то причине мне не хватает?
Более новая версия списка «не требуется для потокобезопасности» находится здесь: http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09_01, но scandir все еще не указан. Было бы интересно сравнить источники BSD и SysV, если у вас есть время их отслеживать. Вероятно, сообщение об ошибке должно быть сделано на glibc. –
Похоже, что glibc на самом деле реализует readdir() поточно-безопасным способом, поэтому, вероятно, отчета об ошибке не нужно делать. –