The posix_fallocate function should only be used with regular files.
FreeBSD does not allow to use posix_fallocate on shared memory objects.
shm_open is a POSIX function creating an in-memory file. Using it simplifies the code and removes the dependency on XDG_RUNTIME_DIR. The only downside is that we need to generate a random name for the shm file.