> Only a Sith deals in absolutes.
Point taken :-)
> What about the use case when you change behavior when a sentinel file exists and don't care about the contents?
You'll still care that you can write that file, right?
> It can also be useful if there's a whole bunch of prerequisites you're going to check before doing a bunch of work; yes, opening the descriptor and keeping it around might be nicer, but...
But, after you've checked the prerequisites, and you start your main work, you're still going to have to handle the case in that main work that one of the files you checked has the wrong permissions/is locked/was deleted.
It's not unusual for users to accidentally open a program twice by misclicking it when they only opened it once.
> It can also be useful if there's a whole bunch of prerequisites you're going to check before doing a bunch of work; yes, opening the descriptor and keeping it around might be nicer, but...
You answered this question below for the `open`/`openat` syscall. For `fopen` ...
> though that doesn't exist in fopen(3)
It has been in the standard since C11, I believe - mode `"x"` for exclusive create and open. You can use it with most C implementations today as most systems support C11.