¿Qué sucede si recompilo un ejecutable mientras se está ejecutando? ¿El sistema operativo lee todos los contenidos del ejecutable en la memoria cuando comienza a ejecutarlo, por lo que nunca leerá el nuevo archivo ejecutable? ¿O leerá secciones del nuevo archivo ejecutable pensando que no ha cambiado, dando lugar a un comportamiento posiblemente indefinido?¿Es seguro recompilar un ejecutable mientras se está ejecutando?
¿Qué pasa si tengo un script en ejecución que invoca repetidamente un ejecutable en un bucle, y recompilo el ejecutable mientras se ejecuta el script. ¿Está garantizado que las iteraciones futuras del bucle invocarán el nuevo ejecutable, y que solo el resultado de la invocación que estaba en progreso cuando se realizó el cambio podría estar dañado?
Mi sistema operativo es Linux, pero también tengo curiosidad sobre lo que sucede en Windows.
¿Qué idioma e implementación? Para la mayoría de los compiladores Common Lisp, no hay problema con cambiar el ejecutable sobre la marcha. Otros sistemas funcionan de manera diferente. –
Este es un ejecutable de C++. No estoy seguro de cómo eso hace una diferencia en el sistema operativo, aunque ... – HighCommander4
Marca la diferencia en esa compilación y ejecución son pasos completamente diferentes, por lo que se trata de cómo el sistema operativo maneja los archivos ejecutables. –