The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"разбираемся с форком"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"разбираемся с форком" 
Сообщение от roman Искать по авторуВ закладки(??) on 07-Июл-05, 16:34  (MSK)
Изучаю процессы. В качестве среды линукс с ядром 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?

Спасибо.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "разбираемся с форком" 
Сообщение от Forth emailИскать по авторуВ закладки(ok) on 07-Июл-05, 17:14  (MSK)
1) Когда завершается дочерний процесс - его статус должен быть получен родительским процессом, пока этого не сделано - дочерний процесс незавершен, почти завершен, то есть пресловутый зомби. Кажется можно просто игнорировать сигнал SIGCHLD и тогда дочерний процесс будет нормально завершаться. А можно и обрабатывать по wait.
2) return - выход из функции. Если это выход из функции main - то в итоге будет вызов exit с аргументом return. Фактически одно и то же.
Нужно это учесть и быть внимательнее, поскольку return, вызванный внутри какой-либо функции программы - не приведет к её завершению. Вообщем return - это оператор выхода из функции, а exit - функция завершения процесса.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "searching for programmers" 
Сообщение от irina emailИскать по авторуВ закладки(??) on 07-Июл-05, 23:22  (MSK)

Уважаемый Роман! Сама я - учительница английского языка в Риге. Мой сын и его фирма - профессиональный программист (25 лет)(кстати, тоже фанат Линукса)- ищет для работы на Америку несколько программистов (работа по Интернету). У него есть группа программистов из Тольятти, которые постоянно работают на него. Зарабатывают очень хорошо (более или менее 1000 долларов, зависит от вклада). Но сейчас они расширяются. Сам он живет сейчас с семьей в Ирландии, до этого жил в Латвии, это наша родина. Если вы заинтересованы - напишите мне - я дам его координаты. Ирина Малиновская. Ваш адрес я взяла из форума.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру