如果使用rename()系统调用原子地替换可执行文件,那么它应该工作使得正在运行的程序继续使用旧的可执行文件.OTOH如果通过将碎片写入现有可执行文件来进行替换,则运行的可执行文件可能会受到影响.
FWIW,这与fortran,pbs和扭矩无关,而是与POSIX文件系统语义有关.POSIX文件系统本质上是引用计数的对象存储,具有delete-on-last-close.使用rename()替换可执行文件时,旧可执行文件的引用计数减1,因为该目录不再具有对它的引用.但是,执行程序仍然保留引用并可以继续使用它.新的可执行文件是一个单独的对象,具有自己的引用计数.