Re: clone() <-> getpid() bug in 2.6?

Paul Rolland
2004-06-06T17:31:28Z

> > I though this was a job for mktemp and co.
>
> Sure, if you want to create a unique filename on a local unshared
> disk.

Right.

> But suppose you want a unique filename on a partition which might be
> NFS-mounted with multiple concurrent writers. Oh, and the year is
> 1997. Still want to use mktemp?

Probably not...

> Bernstein decided to name each file:
>
> .<PID>.<fully-qualified-domain-name>
>
> This approach makes three assumptions. First, that the time does not
> repeat. Second, that the FQDN is unique. Third, that the time
> changes (i.e., one second elapses) before a PID is reused on the local
> system. Subject to these assumptions, this is a perfectly reliable,
> very efficient, lock-free way to create unique file names.
>
> Can you do better?
Not sure it's the best place to run a contest...
However, I could have used something like :
<FQDN>.<time-up-to-usec>.<random-number>

But this is biased because I know I must find an answer with <PID> :-)

> Sure, Bernstein's code is an unmaintainable nightmare. But his
> designs and implementations are usually pretty sound. The last
> release of qmail was in 1998, and we still use it where I work. Six
> years with zero crashes, zero dropped messages, and zero security
> holes is not a trivial track record for an MTA.

One point for him.

Paul