EXCL without CREAT

Henry Spencer henry at utzoo.UUCP
Fri Dec 13 06:59:43 AEST 1985


>	It is most unfortunate that open() flag O_EXCL only applies
>	when O_CREAT is also in effect.  If there were a flag that
>	meant ``succeed only if you can get me the file with nobody
>	else having it opened, and nobody else able to open it,''
>	then that atomic operation could have been used here.
>	...Such a mechanism
>	would save a lot of misguided hacking to achieve exclusive
>	use of a resource.

It would also create problems of its own.  Consider the following:

	main() {
		int foo;

		foo = open("/etc/passwd", O_READ|O_EXCL);
		for (;;)
			sleep(30000);
	}

The CREAT-only restriction is there for a reason.

In any case, removing this limitation (assuming that the security problems
could be solved) would amount to re-inventing flock(); why not just add an
advisory/mandatory flag to flock()?



More information about the Comp.bugs.4bsd.ucb-fixes mailing list