Temporary files Lassi Kortela 09 May 2019 18:16 UTC
Some Unix APIs are classic race condition attractors. mktemp() is one API to avoid because of this. Luckily, create-temp-file in the first draft is smarter than mktemp(): once it finds an unused temp file name, it creates a file under that name, thereby "reserving" that name. It would be good for us to provide an analog to Unix mkstemp() and mkostemp(). They behave like create-temp-file but return an open file descriptor instead of the file name. There's also mkdtemp() to create a temp directory instead of a file. OpenBSD even has shm_mkstemp() to create a shared memory object with a guaranteed-unique name. I think temp file support swould be good to provide in the SRFI since people want to create temp files anyway, so it's good to make it as safe as possible. To that end, I suggest a family of functions similar to the above. I would leave out procedures that only generate a name without creating or opening it in any way (unless someone has a good argument for why a procedure like that is necessary and safe enough).