Если вы статически связываете среду выполнения, тогда другой вариант - записать собственную версию mktemp
в объектный файл. Компоновщик должен предпочесть вашу версию рабочей версии.
Редактировать : Спасибо Джейсону Коко за то, что он указал на серьезное недоразумение, которое у меня было в mktemp
и его родственниках. Это немного легче решить сейчас. Поскольку компоновщик предпочитает версию в объектном файле, вам просто нужно написать mktemp
в терминах mkstemp
.
Единственными сложностями являются очистка файловых дескрипторов, которые mkstemp
вернет вам, и обеспечение безопасности всего потока. Вы можете использовать статический массив дескрипторов и atexit
-регистрационную функцию для очистки, если вы можете ограничить количество временных файлов, которые вам нужны. Если нет, просто используйте связанный список.