我在fortran中有一个代码,我对其进行了编译,然后将其发送为在
超级计算机。我想修改源代码并再次编译,同时保持
已经运行的程序。我的问题是,如果我修改源代码会怎样?
如果我有一个使用其他可执行文件运行的pbs作业,请创建一个新的可执行文件。
原始可执行文件的结果是否会被修改?
谢谢。
最佳答案
如果可执行文件的替换原子地发生在rename()系统调用上,则它应该可以正常运行,以便运行的程序继续使用旧的可执行文件。 OTOH如果替换是通过将零碎内容写入现有可执行文件而发生的,则可能会影响正在运行的可执行文件。
FWIW,这与fortran,pbs或扭矩无关,而与POSIX文件系统语义有关。 POSIX文件系统本质上是带有引用计数的对象存储,具有最后关闭删除功能。当您用rename()替换可执行文件时,由于目录不再具有对旧可执行文件的引用,因此旧可执行文件的引用计数将减少一。但是,正在执行的程序仍保留引用并可以继续使用它。新的可执行文件是一个单独的对象,具有自己的引用计数。