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

Patrick J. LoPresti
2004-06-06T17:21:05Z

"Paul Rolland" <rol@as2917.net> writes:

> Hello,
>
> > It does that for the unique filenames and id stamps
> > (maildir format and
>
> I though this was a job for mktemp and co.

Sure, if you want to create a unique filename on a local unshared
disk.

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?

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?

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.

Just don't ever try to edit the sources. :-)

- Pat