Почему процесс child выполняет неожиданную строку?
Итак, я узнаю, как работают процессы, и написал простой код.
#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;
}
и что я получаю за вывод
Heeeyoooo!
Child 1Heeeyoooo!
Parent.
Process returned 0 (0x0) execution time : 0.001 s
Press ENTER to continue.
Почему я получаю "heyooo" дважды? Мне кажется, что ребенок возвращается в главное, а не прекращается при выходе ...