C-Applikation aus laufendem Code neu starten

Gast #6398473
Mahlzeit,

wir sind gerade dabei eine Software, welche für ein Controller 
geschrieben wurde auf x86 umzuschreiben. Diese soll dann zum testen usw. 
genutzt werden.
Jetzt gibt es dort eine Funktion einen Reset zu machen.
Ist so etwas in Linux irgendwie möglich?
ich müsste ja quasi die main wieder aufrufen. Wobei dann ja noch alle 
variablen (statische) erhalten bleiben? Diese müssten ja natürlich auch 
zurückgesetzt werden.
Gibt es in Linux eine Funktion um eine C-Applikation neu zu starten (aus 
laufendem Code heraus)
Gast #6398498
> Program beenden (exit()) und die Programm-Ausführung von
> einem Script aus in eine Schleife einbetten

&

> Wobei dann ja noch alle variablen (statische) erhalten bleiben?

Wohl eher nicht.

Ganz primitiv:

main(){
  reset:

  ...
  ...
  ...
  goto reset;
  ...
}
Gast #6398540
Alles viel zu kompliziert. exec() ist die richtige Antwort.
1
int main (int argc, char* argv) {
2
  ...
3
  // Programm neustarten
4
  execvp (argv [0], argv);
5
}
Gast #6398550
Eventuell stat argv[0] "/proc/self/exe" nehmen. Das sollte dann 
eigentlich selbst falls argv[0] anders gesetzt wird oder die Datei 
verschoben oder gelöscht wurde noch gehen. Durch ne neue Version 
ersetzen und die laden geht dann halt aber nicht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.