Пытаюсь использовать сигналы, но почему-то они теряются. Программа, которая это демонстрирует: #include <signal.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> int count = 0; void handler(int s) { ++count; } int main(int argc, char *argv[]) { int n; sigset_t ss; struct sigaction sa; int i; pid_t pid; if (argc != 2) { fprintf(stderr, "incorrect usage\n"); return EXIT_FAILURE; } n = atoi(argv[1]); if (sigemptyset(&ss) == -1) { perror("sigemptyset"); return EXIT_FAILURE; } sa.sa_handler = handler; sa.sa_mask = ss; sa.sa_flags = 0; if (sigaction(SIGUSR1, &sa, NULL) == -1) { perror("sigaction"); return EXIT_FAILURE; } for (i = 0; i < n && (pid = fork()); ++i) ; if (pid) { while (1) { printf("count before = %d\n", count); /* pause(); */ sigsuspend(&ss); printf("count after = %d\n", count); } } else { sleep(1); if (kill(getppid(), SIGUSR1) == -1) { perror("kill"); return EXIT_FAILURE; } } return EXIT_SUCCESS; } Результат работы: % ./test 100 /home/legioner/work/c/test count before = 0 count after = 1 count before = 1 count after = 2 count before = 2 count after = 3 count before = 3 count after = 4 count before = 4 count after = 5 count before = 5 count after = 6 count before = 6 count after = 7 count before = 7 count after = 8 count before = 8 count after = 9 count before = 9 count after = 10 count before = 10 count after = 11 count before = 11 count after = 12 count before = 13 count after = 14 count before = 15 И дальше ничего, т.е. 75% сигналов потерялось. Что я делаю не так?
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от Onanim
Ответ на:
комментарий
от idle
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Помогите разобраться с сигналами (2003)
- Форум Помогите разобраться с программой! (2020)
- Форум Как ждать окончания процесса поражденного clone() ???? (2003)
- Форум [c++]Завершение процесса (2011)
- Форум POSIX таймеры (2011)
- Форум Как изменить максимальное число открытых файлов ? (2006)
- Форум ПОМОГИТЕ С ПРОГРАММОЙ. (2010)
- Форум проблема с чтением из FIFO (2024)
- Форум Некорректная работа учебной программы обработки сигналов (2012)
- Форум Обработка сигналов в программе на C (2023)