I think there is an important typo:
> what happens if other processes had open file descriptors pointing to new
Should end with “old”, not “new”.
> what happens if other processes had open file descriptors pointing to new
Should end with “old”, not “new”.
rename("/tmp/foobar", "/path/to/real/foobar");
So, `new` is really `destination`.