| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 тогда о чем? |