Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > signal |
Автор: Elyad 13.10.2006, 18:47 |
Пишу прогу, в которой надо по истечении недели вызывать функцию, которая шлет широковещательные пакеты. Но проблема в том, что в функцию signal нельзя поместить обработчик сигнала с несколькими разными аргументами, т.к. по определению она содержит только один целочисл. аргумент. Мне же надо в функцию записать несколько разных аргументов : структуры адресов сокета, длины, переменные типа char .... Что же делать? ![]() |
Автор: bsa 13.10.2006, 20:39 |
использовать: sleep, usleep, nanosleep, например. |
Автор: MAKCim 13.10.2006, 21:41 |
Elyad в обработчике вообще не рекомендуется заниматься такой работой создай поток, там реализуй ожидание (alarm/seiitimer + sigwait/sigsuspend/pause; sleep) сразу после передачи управления вызывай свою функцию в основной программе соответственно будут основные действия программы |
Автор: Elyad 16.10.2006, 11:27 |
Я пишу под FreeBSD, а там потоков нет!!! А в общем я решил проблему так: // все переменные необходимые для функции обьявлены как глобальные void func(int i) { my_funcion(...здесь введены все необходимые мне параметры); } alarm(604800); // передача сигнала 1 раз в неделю, работает демон signal(SIGALRM, &func); ![]() Ну вроде бы и все. Если кто придумает более оптимальное решение - пишите!!! ![]() |
Автор: MAKCim 16.10.2006, 16:44 | ||||||||
не забудь глобальные переменные сделать типом sig_atomic_t
ну процессы то везде есть. В Linux-е вон тоже отдельного понятия потока не существует
процесс будет простаивать конечно, но это не особо расточительно имхо, этот вариант лучше обработчика |
Автор: kondr 16.10.2006, 16:45 | ||
???? Что правда что ли? ![]() На сколько я знаю, много вэб серверов крутится на FreeBSD. Так че они однопоточные? Что-то не верится... |
Автор: Elyad 18.10.2006, 15:34 |
Открой книгу Стивенса У.Р. "Сетевое программирование" где черному по белому написано, что FreeBSD НЕ ПОДДЕРЖИВАЕТ ПОТОКИ. ![]() |
Автор: bsa 18.10.2006, 16:58 | ||
Интересно, а http://www.unobvious.com/bsd/freebsd-threads.html тогда о чем? |