Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6310
Последний выпуск: 19.06.2015

Процессы

54K
29 ноября 2010 года
Den12342
3 / / 02.01.2010
Добрый день, столкнулся с проблемой в FreeBSD, простенький пример:
Создается 1 процесс из него создается второй, пытаюсь завершить в обратной последовательности, ни как не умирает второй процесс:

Код:
#include <stdio.h>
#include <signal.h>

void Pid1(int s)
{
  printf("Die pid1\n");
  exit(0);
}

void Pid2(int s)
{
  printf("Die pid2\n");  
  exit(0);
}

int main()
{
int pid1, pid2;

pid1 = fork();
if(pid1 == 0)
{
  printf("Started pid1\n");
  pid2 = fork();
  if(pid2 == 0)
  {
      printf("Started pid2\n");
      signal(SIGUSR1, Pid2);
      pause();
  }
  else
  {
    signal(SIGUSR1, Pid1);
    pause();  
  }  
 
}
else
{
  sleep(5);
  printf("Kill pid2\n");
  kill(pid2, SIGUSR1);
 
  sleep(2);
 
  printf("Kill pid1\n");
  kill(pid1, SIGUSR1);
 
  sleep(5);
}    

return 0;
}
43K
30 ноября 2010 года
loki231
76 / / 27.09.2009
Так ведь это, в самом первом родительском процессе pid2 не определено. Поэтому kill (pid2, SIGUSR1) не работает.
54K
30 ноября 2010 года
Den12342
3 / / 02.01.2010
Спасибо, стормозил, все заработало.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог