Unter Linux mit exit() programm starten

Gast #3975846
Lesenswert?

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
#3977566
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren