Я установил обработчик для каждого сигнала (SIGCHLD, SIGTSTP, SIGINT), теперь мне нужно заблокировать другие сигналы, пока работает какой-то обработчик.
Есть некоторые ресурсы, такие как sigaction(2) и Blocking for Handler, но я не понял, что мне делать в моей ситуации или как использовать код.
мало информации:
обработчиков: sigchldHandler, sigintHandler, sigtstpHander => signals.c
есть файл с именем smash.c, который содержит бесконечный цикл, чтобы получить команды все время.
Заранее спасибоБлокирующие сигналы для обработчика
0
A
ответ
4
При настройке sigaction вы можете указать маску сигналов, которые должны быть заблокированы при работе обработчика.
Вы можете использовать его так:
struct sigaction act;
sigset_t set;
memset(&act,0,sizeof act);
sigemptyset(&set);
sigaddset(&set, SIGUSR1);
sigaddset(&set, SIGSTP);
act.sa_mask = set;
act.sa_handler = sigchldHandler;
act.sa_flags = SA_RESTART;
sigaction(SIGCHLD, &act, NULL);
Это будет блокировать SIGUSR1 и SIGSTP в то время как ваш обработчик SIGCHLD работает. Сделайте то же самое для двух других обработчиков.
Смежные вопросы
- 1. Физические блокирующие сигналы Bluetooth
- 2. Qt/C++: рекурсивные мьютексы, «зоны синхронизации» и блокирующие сигналы
- 3. сигналы терминации обработчика и очистки действия
- 4. питон asyncio объяснения и сигналы обработчика
- 5. Блокирующие блокировки и блокирующие блокировки
- 6. сигналы python для многопотоков
- 7. AWS - Блокирующие порты
- 8. Блокирующие вложенных циклов итератора
- 9. Чтение две блокирующие итераторы
- 10. Акки Akka, блокирующие сообщения
- 11. Обходные блокирующие всплывающие окна
- 12. Запросы, блокирующие друг друга
- 13. Блокирующие функции в XNA
- 14. ScrollViewer блокирующие события
- 15. Семафоры, блокирующие и разблокирующие
- 16. fwrite fopen блокирующие потоки
- 17. Блокирующие операции и ZeroMQ
- 18. Блокирующие каталоги с .htaccess
- 19. Блокирующие акцент символов
- 20. Закрыть блокирующие соединения
- 21. Блокирующие штрихи в cocos2d
- 22. Используются ли блокирующие потоки?
- 23. Многопользовательские блокирующие рабочие потоки
- 24. блокирующие Корс от происхождения
- 25. Блокирующие веб-скребки
- 26. Блокирующие сокеты в Windows
- 27. Блокирующие обещает угловые
- 28. POSIX потоки и сигналы
- 29. javafx - события, блокирующие другие события от обработки?
- 30. слоты и сигналы для многопоточности
Должен ли я помещать этот код перед бесконечным циклом или внутри каждого обработчика? – Rawhi
@Rawhi Этот код используется для настройки обработчиков сигналов, чтобы можно было вызвать обработчики сигналов. Если вы разместите его внутри обработчиков сигналов, когда будет запущен этот код? Он никогда не будет запущен. Если вы разместите его после цикла infinte, он никогда не будет запущен. Если вы поместите его в бесконечный цикл, он будет работать на каждой итерации, что является просто пустой тратой. Поместите его перед бесконечным циклом. – nos