Läuft ein C-Programm mit execlp()?

Also ich habe ein c-Programm namens "Hallo.c", die nichts tut, aber "exit(2)" am Ende. Und ich habe versucht zu laufen, in mein Kind-Prozess, und übergeben Sie den Rückgabewert an meine Eltern zu verarbeiten und drucken Sie die entsprechenden Nachrichten. Aber irgendwie hat das Programm immer beenden auf 0, und drucken Sie die "exit 0" angezeigt. Kann mir jemand sagen warum?

pid_t pid;
int status;

pid = fork(); 

if (pid == -1){
    perror("fork");
    exit(1);
} 
if (pid >0){
    /*abusive parents*/
    waitpid(pid, &status, 0);

    if(WEXITSTATUS(status)==3){
        printf("exit at 3\n");
    }
    if(WEXITSTATUS(status)==2){
        printf("exit at 2\n");
    }
    if(!(WEXITSTATUS(status))){
        printf("exit at 0\n");
    }

}
else{
    /*stupid child*/
    execlp("hello.c",NULL);
}


return 0;}

Hier ist die Hallo.c:

int main(void){
   int teemo=0;

   exit(2);
}
  • Sie laufen nicht ein C-Programm führen Sie die kompilierte ausführbare Datei... So execlp("hello.c",NULL) sollte execlp("hello.bin",NULL)
  • Noch immer 0 obwohl. Muss ich kompilierte c-Programm zuerst?
  • Wenn Sie eine IDE, ich schlage vor, Sie aufhören, es für eine Weile und zum Kommandozeilen-tools. Dies sollte Ihnen helfen erwerben einige relevante intuition.
InformationsquelleAutor Pig | 2014-03-03
Schreibe einen Kommentar