finding ....

Jon Fairbairn Jon.Fairbairn@cl.cam.ac.uk
Wed, 20 Mar 2002 10:18:56 +0000


> Could someone post an example of the creation of a
> temporary file where race conditions are important?

/any/ programme that does this on a multi-process system.

Between the test for existence and the creation, some other
process could have created a file of the same name. Then
the create fails because of insufficient permissions,
so the programme has to deal with failure anyway, or it
succeeds and stomps on the data belonging to the other
process.



do possible_handle <- try $ openFile "whatever" ReadMode
   case possible_handle =

     of (Right handle) -> do_things_to handle
        (Left error) -> do whatever you would have done had
                           the existence test returned false

is no more complex than a version using an existence test,
but to create a file for writing, surely we need an
openNewFile primitive? Otherwise we might open on a file
that already exists and hit the "stomp" error mentioned
above.


 J=F3n

-- =

J=F3n Fairbairn                                 Jon.Fairbairn@cl.cam.ac.u=
k
31 Chalmers Road                                         jf@cl.cam.ac.uk
Cambridge CB1 3SZ            +44 1223 570179 (after 14:00 only, please!)