Сделать временный каталог с POSIX.1-2001 - PullRequest
1 голос
/ 09 марта 2020

Программа, над которой я работаю, нуждается во временном каталоге. Тем не менее, я хотел бы придерживаться POSIX.1-2001. С этим ограничением, есть ли способ использовать tmpnam? Я знаю проблемы с безопасностью, но это не мое дело. Причина, по которой я не использую его, заключается в том, что он помечен как устаревший в POSIX.1-2008 В какой момент будут удалены устаревшие функции?

1 Ответ

3 голосов
/ 09 марта 2020

В POSIX 2001 (2004) вам, вероятно, придется использовать mktemp() для создания имени, а затем mkdir() для создания каталога с этим именем. Это может привести к проблемам TOCTOU (время проверки, время использования) с символьными ссылками et c. Однако, с учетом вышесказанного, функция mktemp() не появляется в POSIX 2008 (поэтому функции иногда удаляются), но, вероятно, она все еще есть в библиотеке каждой системы. Функция tmpnam() присутствует в обеих версиях POSIX.

В POSIX 2008 вместо этого вы можете использовать mkdtemp(), что имеет преимущества в плане безопасности.

...