Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Что делать, если хочется временного файла?


Автор: Chaos A.D. 26.2.2005, 17:02
Что делать, если хочется временного файла? Под винду можно просто поюзать функцию из API, которая создает временный файл с _уникальным_ именем, и вернет его дескриптор. Мне нужен аналог из линукса, ну или просто что-нибудь, что служило бы гарантом уникальности имени временного файла. А иначе можно переписать какой-нибудь юзерский файл, что не очень хорошо. Как удалить переименовать любой файл? Вообще, где можно почитать про API линукса?

Автор: Ni@m 26.2.2005, 17:12
Помоему функции ядра такой нету. Но есть в стандартной библиотеке с++ такие функции как tempnam, tmpnam, tmpfile. Можете поискать в man.

Автор: oleg1973 26.2.2005, 22:53
а что не сутьба в текущей директории создать файл ?
и дать ему имя типа ass.exe
такого в линюхе точно нет smile

Автор: Chuck 27.2.2005, 10:03
Или в /tmp
содать файл, имя которого содержит время в секундах от начала эпохи *никсов!
Типа 10432484533.tmp

Автор: dargaard 28.2.2005, 00:27
Цитата(Chuck @ 26.2.2005, 23:03)
Или в /tmp
содать файл, имя которого содержит время в секундах от начала эпохи *никсов!
Типа 10432484533.tmp

А если у тебя 2 потока/проги которые раобтают/которым нужен фаил в одну и туже секунду?smile
Если делать руками то лучше по pid создавать фаилы. Хотя лучше всего использовать уже готовые ф-ции как было указано выше.

Автор: maxim1000 28.2.2005, 11:54
генерируем имя, проверяем наличие такого файла
если уже есть, генерируем другое имя и т.д....

Автор: Ni@m 28.2.2005, 17:37
Весь прикол временного файла в том, что он должен удалиться после завершения проги. Я думаю, что самому за этим следить - дело дурное smile . Обрабатывать эксепшины и всякую другу дребедень. Почему б не заюзать стадартные функции, о коих я уже упоминал. Они создают файл именно в /tmp/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)