Warum führt Process Child eine unerwartete Zeile aus?

So lerne ich die Funktionsweise von Prozessen kennen und habe einfachen Code geschrieben.

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int SemId;
void SemGet(int n)
{
   SemId = semget(IPC_PRIVATE, n, 0600);
   if (SemId == -1) {
      exit(1);
   }
}
int SemSetVal(int SemNum, int SemVal)
{
   return semctl(SemId, SemNum, SETVAL, SemVal);
}
int SemOp(int SemNum, int SemOp)
{
   struct sembuf SemBuf;
   SemBuf.sem_num = SemNum;
   SemBuf.sem_op  = SemOp;
   SemBuf.sem_flg = 0;
   return semop(SemId, & SemBuf, 1);
}
void SemRemove(void)
{
   (void) semctl(SemId, 0, IPC_RMID, 0);
}

void child(int vchild) {
    printf("\nChild %d", vchild);
    return;
}

int main(int argc, char** argv) {
    printf("\nHeeeyoooo!");

    if (fork() == 0) {
        child(1);
        exit(0);
    }
    (void) wait(NULL);
    printf("\nParent.");

    return 0;
}

und was ich für die Ausgabe bekommen, ist

Heeeyoooo!
Child 1Heeeyoooo!
Parent.
Process returned 0 (0x0)   execution time : 0.001 s
Press ENTER to continue.

Warum bekomme ich zweimal "heyooo"? Ich sehe so aus, als würde das Kind zurück in die Hauptrolle gehen, anstatt vom Ausgang beendet zu werden ...

Antworten auf die Frage(4)

Ihre Antwort auf die Frage