I've had the opposite problem, where I assumed shell scripts were cached, but an instance already running started using my modified version, while I was still working on it
Also, let's not limit our scenarios to one process and one file descriptor. Each of those is a reference count. So your process may open the same file 3 times. And/or 10 processes on the system may hold the file open. 30 file descriptors might as well be 30 hardlinks in the filesystem. The file has life until all of those references go away.