Ich schreibe ein Programm in C auf Linux-Umgebung (Debian-Lenny) und möchte das Programm aktualisiert werden, wenn ein Update verfügbar ist (das Programm wird benachrichtigt, wenn a neues Update ist verfügbar). Ich suche nach einer Möglichkeit, das Programm selbst zu aktualisieren.Linux C - Implementierung der Fähigkeit, dass ein Programm sich selbst aktualisieren kann
Was ich denke ist, dass das Hauptprogramm ein neues Programm aufruft, um das Update zu behandeln. Das Aktualisierungsprogramm wird (Zugang zu) dem Quellcode und erhält die Update Informationen über die Änderungen auf dem Quellcode, so ähnlich:
edit1: line 20, remove column 5 to 20;
edit2: line25, remove column 4-7 then add "if(x>3){" from the column4
edit3: line 26, enter a new line and insert "x++;"
dann den Hauptprozess töten, den Quellcode neu kompiliert und dann ersetzen die neue Binärdatei mit der alten.
oder gibt es eine bessere (leichtere) und standardmäßige Möglichkeit, die Fähigkeit zu implementieren, dass ein Programm sich selbst aktualisieren kann?
Ich benutze das Programm, um ein System mit einem Linux Embedded Board zu steuern. Daher möchte ich nicht, dass der Quellcode für eine andere Person zugänglich ist (wenn das System gehackt wird oder so). Wenn Sie den besten Weg finden, ein Programm mithilfe des Quellcodes zu aktualisieren, wie empfehlen Sie mir, den Quellcode zu sichern? Wenn Sie mir vorschlagen, den Quellcode zu verschlüsseln, welche Funktion (Linux C) kann das Programm zum Verschlüsseln und Entschlüsseln der Quelldatei verwenden?
Wie wäre es mit der Suche nach einem Update auf einem Remote-Server? Ist das eine Option? – Jeff
könnte am einfachsten sein, ein Svn, Git etc. Trunk zu aktualisieren und dann den Code neu kompilieren, und haben die Svn oder Git usw. die Drecksarbeit zu tun. – hetepeperfan
Ich bin mir nicht sicher, ob ich das richtig lese, aber wenn Sie sich um den Quellcode kümmern, sollten Sie die neue Version des Programms auf einer sicheren Box kompilieren und einfach die Binärdatei senden (oder vom Client holen lassen). – Will