Изучаю процессы. В качестве среды линукс с ядром 2.4.x
Вот такой простой код:
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
int main(void)
{
int pid; /* process PID */
int status;
/* create new process to handle client */
if ( (pid = fork()) == -1 ) {
perror("fork() error");
exit(1);
}
/* here is child process running */
if (pid == 0) {
printf("child process, pid=%d ppid=%d\n", getpid(), getppid());
int i;
for (i=0; i < 1000000; i++) ;
}
/* here is parent process running */
else {
/* wait until child has exited */
//pid = waitpid(-1, &status, WNOHANG);
wait(&status);
printf("child process %d terminated \n", pid);
}
return 0;
}
Что мне не понятно.
1) Для чего нужно ждать завершения ребенка (как пишут во всех доках)? В моем случае - child спокойно завершается и без wait (waitpid).
2) нужно ли в теле чайлда в конце кода ставить exit(SOME_CODE) или return?
Спасибо.