Возможно ли изменить исполняемый файл в процессе выполнения*?
===============================================================

 В общем суть вопроса в заголовке вопроса. Возможно ли в процессе выполнения исполняемого файла изменить его содержимое на жестком диске? 

**Unix-way**: в исполняемом файле - только исполняемый код, он при запуске читается в память, после этого файл свободен и с ним можно делать все, что позволяет твой доступ.  

**Windows-way**: в исполняемом файле может быть навалено три короба ресурсов, вплоть до вырожденных случаев вроде самораспаковывающегося архива, когда код - это просто небольшая вставка в гигантский исполняемый файлище. Так что в память читается только код, но при этом предполагается, что он может подтягивать из файла ресурсы, когда они понадобятся. Поэтому файл блокируется на запись до тех пор, пока этот код не закончит выполнение. 

 да можно 

  

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

  

Так же есть вариант для совсем уж отбитых: писать в исполняемый файл через ofstream машинный код(предварительно скопировав сам исполняемый на системах семейства Windows) и перезапускаться exec'ом, но тут более чем дофига причин так не делать - как минимум будет больно и страшно.