Theoretisch ist dies mit LD_PRELOAD mit dem gewünschten Programm möglich.
Schreiben Sie eine Bibliothek, um einen Wrapper über "offene" Systemaufrufe hinzuzufügen, und verwenden Sie das Originalprogramm (etwa cat
) als LD_PRELOAD=/path/to/library cat
.
Der overridden_open () - Code in der Wrapper-Bibliothek würde dem folgenden Dummy-Code ähneln.
/* This is an illustrative code, and doesn't follow any good coding practice. */ int overridden_open (...) { /* Only do this for the config file. */ if (strcmp (filename, "/path/to/required/config/file") == 0) { /* Download a fresh copy, and if successful, overwrite the existing file. */ if (system ("wget -O /path/to/required/config/file.tmp http://remote.file/url") == 0 && system ("<perform awk/sed/grep operations>") == 0) { system ("mv /path/to/required/config/file.tmp /path/to/required/config/file"); } } return open (...); }