Unter Linux mit exit() programm starten

Gast #3975846
Hi,
Wie im Betreff zu sehen, frag ich mich, ob es möglich ist unter Linux 
die int main() mit exit(x) statt return zu verlassen und iwie ein 
weiteres programm zu starten!?
Hintergrund ist, wenn das Prog zu Ende ist, soll es sich mit nem anderen 
Parameter nochmal selbst aufrufen.

Grüße Hans
Gast #3977482
System forkt und macht dann ein exec, sprich du hast dann 2 Prozesse.

Wenn du dein Programm mit exec startest wird der Hauptprozess durch 
deine Zielapplikation ausgewechselt.
#3977566
Wenn man system oder exec nutzt, um dass program sich selbst aufrufen zu 
lassen, wird mit jedem aufruf ein neuer prozess erstelt, wobei der erste 
erhalten bleibt bis der letzte beendet wurde. Ich würde eher folgendes 
konstrukt wählen:
1
// ungetestet
2

3
void appMain(int argc;char** argv){
4
  // code
5
}
6

7
int largc,char** largv;
8
jmp_buf startpoint;
9

10
int main(int largc,char** largv){
11
  argc=largc;
12
  argv=largv;
13
  setjmp(startpoint);
14
  return appMain(argc,argv);
15
}
16

17
void restart(int largc,char** largv){
18
  argc=largc;
19
  argv=largv;
20
  longjmp(startpoint, 0);
21
}
Gast #3977587
Daniel A. schrieb:
> Ich würde eher folgendes
> konstrukt wählen:

und was ist mit den ganzen globalen Variabel die nicht neu initialisiert 
werden? Oder die Freigabe vom sämtlichen Speicher sowie Recourcen 
(files, Threads usw.)

Wenn man ein stabil laufendes Programm will, sollte man so ein Mist 
nicht machen.
Gast #3977595
Daniel A. schrieb:
> Wenn man system oder exec nutzt, um dass program sich selbst aufrufen zu
> lassen, wird mit jedem aufruf ein neuer prozess erstelt, wobei der erste
> erhalten bleibt bis der letzte beendet wurde
Nein, bei exec eben nicht, das ersetzt den Prozess. Wie dein Code 
einen neuen/anderen Prozess starten soll so ganz ohne Aufruf von exec, 
fork, system... ist aber nicht ganz klar.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 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.