#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;
}
Процессы
Создается 1 процесс из него создается второй, пытаюсь завершить в обратной последовательности, ни как не умирает второй процесс:
Код:
Так ведь это, в самом первом родительском процессе pid2 не определено. Поэтому kill (pid2, SIGUSR1) не работает.
Спасибо, стормозил, все заработало.