Editando archivos en uso
Leyendo el manual de rsync(1), en la documentación de la opción --inplace avisa de que:
In-use binaries cannot be updated (either the OS will prevent this from happening, or binaries that attempt to swap-in their data will misbehave or crash).
Resulta que hace un tiempo había intentado hacer un programa que modificara su propio binario para guardar datos (sin ningún motivo concreto), pero resultaba en errores al modificar el propio archivo mientras aún estaba en uso, además es posible (en sistemas POSIX) eliminar archivos en uso. La lectura de la opción de antes encendió una bombilla, he aquí ese programa que modifica su binario para guardar un número, lo hace cargando su propio archivo en memoria, eliminando el archivo y creando uno nuevo... probablemente la localización del punto en memoria se podía hacer de una forma más sofisticada, pero es solo un programilla de prueba.
Pueden dar warning al compilar, memmem parece que no se porta muy bien con los volatile, pero hace falta que esa estructura lo sea para asegurarse de que no queda modificada en las optimizaciones.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Ahora... lo complicado va a ser encontrarle un uso útil :P