0

Given the following program, named "hello" (code is below), when doing: ./hello output is:

Hello
Hello
Hello
Hello
Hello
Hello
Hello

And when executing it like that: ./hello > out.txt out.txt contains 12 Hello. Why? I understand that I redirected stdout, so Fludh might be affetcted.

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

int main()
{
 // printf("Main PID: %d\n", getpid());
 for (int j = 0; j<3; j++)
 {
    int pid = fork();
    if (!pid) 
    {
        printf("Hello\n");
    }
 }
 
 while(wait(NULL) > 0) ;
}

In order to check the pid and ppid I changes printf("Hello\n"); with:

printf("%d PID: %d, PPID: %d\n",j, getpid(), getppid());

and got weird output on the out.txt file:

0 PID: 4432, PPID: 4431
1 PID: 4433, PPID: 4432
2 PID: 4434, PPID: 4433
0 PID: 4432, PPID: 4431
1 PID: 4433, PPID: 4432
1 PID: 4435, PPID: 4431
2 PID: 4436, PPID: 4435
0 PID: 4432, PPID: 4431
2 PID: 4437, PPID: 4432
1 PID: 4435, PPID: 4431
0 PID: 4432, PPID: 4431
2 PID: 4438, PPID: 4431

Also, When I added printf("Main PID: %d\n", getpid()); outside the loop (above it) The out.txt contained it 8 times!

any ideas?

I was expecting the output to contains the same amount of hellos

erik258
  • 14,701
  • 2
  • 25
  • 31
Paz Bechor
  • 19
  • 5

0 Answers0