sigaction (Как вызвать свой обработчик сигнала в каждом компоненте)
Модератор: Модераторы разделов
-
vladimir_l
- Сообщения: 24
sigaction
Программа загружает несколько библиотек. В каждой библиотеке организована работа со своим СОМ портом. С помощью sigaction в каждой библиотеке установлен свой обработчик сигнала SIGIO. Но срабатывает почему-то только тот который был подключен последним. Как вызвать обработчики сигнала в каждой библиотеке?
-
RasenHerz
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: sigaction
vladimir_l писал(а): ↑29.06.2009 18:16Программа загружает несколько библиотек. В каждой библиотеке организована работа со своим СОМ портом. С помощью sigaction в каждой библиотеке установлен свой обработчик сигнала SIGIO. Но срабатывает почему-то только тот который был подключен последним. Как вызвать обработчики сигнала в каждой библиотеке?
думаю ответ - "никак". один процесс - один обработчик сигнала. ищите альтернативные пути.
-
vladimir_l
- Сообщения: 24
Re: sigaction
RasenHerz писал(а): ↑29.06.2009 19:14vladimir_l писал(а): ↑29.06.2009 18:16Программа загружает несколько библиотек. В каждой библиотеке организована работа со своим СОМ портом. С помощью sigaction в каждой библиотеке установлен свой обработчик сигнала SIGIO. Но срабатывает почему-то только тот который был подключен последним. Как вызвать обработчики сигнала в каждой библиотеке?
думаю ответ - "никак". один процесс - один обработчик сигнала. ищите альтернативные пути.
Я так и понял. Пробовал в каждой библиотеке пускать QThread и в нем опрашивать порт, но почему-то когда в основном модуле программы использую QProcess, то вся программа виснет. Без QThread QProcess запускается нормально. Используется Qt3. Может кто пдскажет альтернативу чтения с портов?
-
GMar
- Сообщения: 237
- Статус: Будущий математик
- ОС: Kubuntu,Ubuntu(UNR) 10.04
Re: sigaction
SIGIO - это сигнал или событие? вы чувствуете разницу между понятиями? сигнал можно к целой куче слотов законектить, с событиями все иначе.
Судя по всему речь идет о событии. У него может параметры какие есть?
Судя по всему речь идет о событии. У него может параметры какие есть?
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: sigaction
GMar
Ээ.. Боюсь, речь не о тех сигналах, про которые вы подумали :)
Ээ.. Боюсь, речь не о тех сигналах, про которые вы подумали :)
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
Женя Подсыпальников
- Сообщения: 482
Re: sigaction
Может, оповестить явно, из единственного обработчика,
перебирая все функции-реакции коммуникаторов,
основываясь на конфигурацию (карту коммуникаторов) программы ?
Ведь для установки-чтения-сбрасывания некоторого байта ли бита в нём -
даже не нужно синхронизации потоков...
Пойдём на рыбалку !
-
RasenHerz
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: sigaction
попробуйте работать не в потоках, а в разных процессах (юзайте fork()) - пусть все опрашивающие порты процессы ставят обработчики сигналов и общаются с родительским процессом, к примеру, по локальному сокету.
UPD. вот один из моих постов, где я столкнулся с этой проблемой.
UPD. вот один из моих постов, где я столкнулся с этой проблемой.