[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: os.tmpname()
- From: David Burgess <dburgess@...>
- Date: Thu, 1 Dec 2005 01:24:29 +1100
If you are single threaded, I have used schemes like
seq=seq+1
filename = os.getenv"TEMP" .. "myprog" .. tostring(getpid()) .. tostring(seq)
At least you get to choose where the file goes. tmpname() (as you point out)
is not good on windows.
DB
On 12/1/05, Frederico Rodrigues Abraham <devotion97@gmail.com> wrote:
> yea, i saw this function, but i only want the filename so i can pass to
> a library who does the fopen...
> since i'm single-thread, i guess tmpname() will do fine...
> thanks
> -- Fred
>
> > Frederico Rodrigues Abraham wrote:
> >
> >> well i solved it using tmpname(NULL,NULL)... it considers the
> >> temporary directory of the system.
> >> when i use tmpnam() on windows on a non-writable root, the filename
> >> generated (\something) is not writable...
> >> i guess it's an implementation bug
> >
> >
> > FYI, tmpnam is considered a very bad function to use. If two processes
> > or threads use it at the same time, it can generate a duplicate
> > filename. It is much better to use tmpfile() which returns a FILE*
> > directly, so it can be atomic and avoid duplicate names. It works on
> > both win32 and Linux, and I assume on most other Unices (including Mac
> > OSX). That might be a better function to wrap. It has the added
> > benefit of deleting the file automatically when you close it!
> >
>
>