2016-03-21 3 views
-1

In meiner C-Programm möchte ich mein Programm Quellcode rufen rekursiv, wie folgt aus:Unix - C - Exec auszuführen gleiche Programm

#include <stdio.h> 
#include <unistd.h> 

int main() { 
    printf("Hello World\n"); 
    execlp("a.out", "a.out", NULL); 
    return 0; 
} 

Unter der Annahme, a.out das Ergebnis der Zusammenstellung der oben genannten Quellcode unter Verwendung

gcc program.c 

ich erhalte die folgende Ausgabe:

Hello World 

Als ob ich nicht das geschrieben execlp Linie. ¿Ist damit etwas nicht in Ordnung? Der Ausgang ich erreichen möchte ist folgendes:

Hello World 
Hello World 
Hello World 
Hello World 
... 

Offensichtlich in meinem Programm würde es sich um eine Stoppbedingung sein, aber der Einfachheit halber Ich betrachte es nicht jetzt.

Also, wie könnte es getan werden? Danke.

+0

Sie starten das Programm nicht mit 'a.out'. Sie starten es mit './A.out', oder? –

Antwort

0

Um den Code zu korrigieren, ändern Sie den Befehl execlp.

#include <stdio.h> 
#include <unistd.h> 

int main() { 
    printf("Hello World\n"); 
    execlp("./a.out", "", NULL); 
    return 0; 
} 

es dann ./a.out in Ihrem Terminal laufen.

BTW Sie könnten die gleiche Ausgabe mit Schleifen: for, while.

0

Um diese Art von Ausgabe zu generieren, sollten Sie Schleifen statt Rekursion verwenden. Wie Sie bereits erwähnt haben, möchten Sie eine Stop-Bedingung hinzufügen ...

#include <stdio.h> 

int main() { 
    while (true) // To do: add a stop condition. 
    { 
     printf("Hello World\n"); 
    } 
    return 0; 
} 
Verwandte Themen