Изучаю процессы. В качестве среды линукс с ядром 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?Спасибо.
1) Когда завершается дочерний процесс - его статус должен быть получен родительским процессом, пока этого не сделано - дочерний процесс незавершен, почти завершен, то есть пресловутый зомби. Кажется можно просто игнорировать сигнал SIGCHLD и тогда дочерний процесс будет нормально завершаться. А можно и обрабатывать по wait.
2) return - выход из функции. Если это выход из функции main - то в итоге будет вызов exit с аргументом return. Фактически одно и то же.
Нужно это учесть и быть внимательнее, поскольку return, вызванный внутри какой-либо функции программы - не приведет к её завершению. Вообщем return - это оператор выхода из функции, а exit - функция завершения процесса.
Уважаемый Роман! Сама я - учительница английского языка в Риге. Мой сын и его фирма - профессиональный программист (25 лет)(кстати, тоже фанат Линукса)- ищет для работы на Америку несколько программистов (работа по Интернету). У него есть группа программистов из Тольятти, которые постоянно работают на него. Зарабатывают очень хорошо (более или менее 1000 долларов, зависит от вклада). Но сейчас они расширяются. Сам он живет сейчас с семьей в Ирландии, до этого жил в Латвии, это наша родина. Если вы заинтересованы - напишите мне - я дам его координаты. Ирина Малиновская. Ваш адрес я взяла из форума.