22 Jul
2004
22 Jul
'04
6:28 a.m.
Hi Russell,
With filesystem, you can do
filesystem::path P(....); filesystem::ofstream S; if (!filesystem::exists(P)) { S.open(P); }
But isn't there a race condition here which could lead to a file created by another process being wiped out, or added to?
Is there a way to get ofstream::open to fail if the file already exists? It succeeds on VC7.1 but in some situations I don't want it to succeed.
I believe you can't do it portably.... on Linux, for example, there's O_EXCL flag to the 'open' system call, but you can't specify this flag via boost::fs. In fact, this is related to temporary file discussion we had on dev list before. Probably, it means we need a function in boost::fs to do what you ask for. - Volodya