Редактирование источника во время выполнения программы - PullRequest
1 голос
/ 11 октября 2011

У меня есть программа на C, которая вызывает несколько функций из разных файлов, и при компиляции я связываю все объектные файлы вместе, чтобы создать двоичный файл.Затем я запускаю выполнение программы.Теперь я хотел бы отредактировать источник различных файлов и скомпилировать новые версии.Это перезапишет старый объект и двоичные файлы.

Повлияет ли это на выполнение текущей программы?Будет ли теперь связывать новые объектные файлы?Если я перезапишу исполняемый бинарный файл, это приведет к остановке выполнения или как-то повлияет на него?Или код хранится в месте, где его нельзя перезаписать в начале выполнения?

Я использую gcc для компиляции моего кода.

1 Ответ

3 голосов
/ 11 октября 2011

В Unix, разрешение gcc заменить исполняемый файл не повлияет на работающую программу.

Способ, которым это работает, заключается в том, что старый исполняемый файл будет оставаться на диске до тех пор, пока работает программа, так что операционная система может обращаться к нему при необходимости. Больше не будет записи каталога, указывающей на старый исполняемый файл, и место на диске будет освобождено, когда старый экземпляр программы остановится.

...