работающие программы с крутящим моментом - PullRequest
2 голосов
/ 15 сентября 2011

У меня есть код на фортране, который я скомпилировал и затем отправил для запуска в качестве задания pbs в суперкомпьютере.Я хочу изменить исходный код и скомпилировать его снова, сохраняя уже работающую программу.Мой вопрос заключается в том, что произойдет, если я изменю исходный код и создам новый исполняемый файл, если у меня запущено задание pbs с другим исполняемым файлом.Будут ли изменены результаты исходного исполняемого файла?

Спасибо.

1 Ответ

7 голосов
/ 15 сентября 2011

Если замена исполняемого файла происходит атомарно с помощью системного вызова rename (), то он должен работать так, чтобы запущенная программа продолжала использовать старый исполняемый файл. OTOH, если замена происходит путем записи фрагментов в существующий исполняемый файл, это может повлиять на работающий исполняемый файл.

FWIW, это не имеет ничего общего с fortran, pbs или крутящим моментом, а скорее связано с семантикой файловой системы POSIX. Файловые системы POSIX - это, по сути, хранилища объектов с подсчетом ссылок, с delete-on-last-close. Когда вы заменяете исполняемый файл на rename (), счетчик ссылок старого исполняемого файла уменьшается на единицу, поскольку каталог больше не имеет ссылки на него. Тем не менее, исполняющая программа по-прежнему содержит ссылку и может продолжать использовать ее. Новый исполняемый файл представляет собой отдельный объект с собственным счетчиком ссылок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...