The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"В очередной раз про таймеры..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"В очередной раз про таймеры..."
Сообщение от XMan Искать по авторуВ закладки on 15-Мрт-03, 00:45  (MSK)
Извиняюсь, если подобное недавно спрашивали, но я не нашел.

Значится, имеется nss-модуль с кучей функций (getpwnam,getpwuid и т.п.). Когда программа дергает getpwna, glibc дергает ее из моего модуля. Моя функция соединяется с сервером, запрашивает данные, получает их, закрывает соединение и возвращает управление программе.
Внимание, вопрос: можно ли как-нибудь сделать, чтобы через N секунд работы программы (не моей функции, а уже существующей программы; например mc) вызывалась другая функция из моего модуля, не используя при этом сигналы SIGALRM, SIGVTALRM и SIGPROF ? Интересует для того, чтобы не закрывать соединение сразу, а подождать некоторое время - вдруг опять дернется какая-либо функция.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "В очередной раз про таймеры..."
Сообщение от XMan Искать по авторуВ закладки on 15-Мрт-03, 00:51  (MSK)
Забыл добавить на всякий случай:

linux 2.4.18
glibc 2.2.5

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "В очередной раз про таймеры..."
Сообщение от Soldier Искать по авторуВ закладки on 16-Мрт-03, 07:54  (MSK)
>Извиняюсь, если подобное недавно спрашивали, но я не нашел.
>
>Значится, имеется nss-модуль с кучей функций (getpwnam,getpwuid и т.п.). Когда программа дергает
>getpwna, glibc дергает ее из моего модуля. Моя функция соединяется с
>сервером, запрашивает данные, получает их, закрывает соединение и возвращает управление программе.
>
>Внимание, вопрос: можно ли как-нибудь сделать, чтобы через N секунд работы программы
>(не моей функции, а уже существующей программы; например mc) вызывалась другая
>функция из моего модуля, не используя при этом сигналы SIGALRM, SIGVTALRM
>и SIGPROF ? Интересует для того, чтобы не закрывать соединение сразу,
>а подождать некоторое время - вдруг опять дернется какая-либо функция.


Прежде всего хотедось бы уточнить, что имелось ввиду: через N секунд после запуска некой программы,через N секунд после окончания работы функции или через N секунд после установления соединения? Потому как если через N секунд после запуска некой программы, то если не ошибаюсь, это через /proc надо определять (если pid известен конечно).

У меня идея (не очень красивая правда) использовать фифо-шку + select. То бишь после отработки функции делаешь select по чтению на какую-нибудь фифо-шку. Если пришел запрос в течении какого-нибудь промежутка времени то пишешь в эту фифо-шку что-нибудь и select завершится нормально; если ничего не было, то select завершится по timeout и соединение можно закрыть(или вывать чего-нибудь). Если использовать thread, то это должно реализоваться без проблем, с fork() немного сложнее(?), но тоже реализуемо.  

Хотя возможно я опять чего то не так понял, по-этому заранее SORRY если ответил невпопад :)))


P.S. Кстати как успехи с nss? - Я тоже этой идеей загорелся(хочу правда через Interbase), да только руки никак не дойдут, некогда все.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "В очередной раз про таймеры..."
Сообщение от XMan Искать по авторуВ закладки on 16-Мрт-03, 14:48  (MSK)
Имелось ввиду через N секунд после окончания работы функции.

Не хотел бы я, если честно, делать потомков с потоками. Лучше уж так пусть будет :)

> P.S. Кстати как успехи с nss? - Я тоже этой идеей загорелся(хочу правда через Interbase), да только руки никак не дойдут, некогда все.

Рабочую часть почти дописал :) Осталось окончательно утвердить протокол и саму сеть приделать. Серверную часть полностью проверил - пока работает без глюков :)
Недавно пересматривал, а потом и переписывал конфигурацию сервера. Сейчас можно указать откуда таскать данные по запросу такой-то программы с такой-то машины. Вообще из написанного конфигурация мне больше всего понравилась - достаточно гибкая уже сейчас и имеются идеи для дальнейших модификаций :)

Взявши за основу libnss_pgqsl я полностью переделал backend.c Сейчас nss-модуль вообще не зависит от какой бы то ни было базы данных. Он цепляется к своему серверу, который уже и соединяется с конкретной базой. В этом есть и недостатки и немалые преимущества. Надо будет туда еще dlopen впихнуть, дабы можно было пользовать разные базы в зависимости от конфигурации :)

PS. В этом всем деле самое интересное другое - откуда будут браться данные по запросу getpwent или getgrent.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "В очередной раз про таймеры..."
Сообщение от Soldier Искать по авторуВ закладки on 18-Мрт-03, 06:41  (MSK)
>
>Не хотел бы я, если честно, делать потомков с потоками. Лучше уж
>так пусть будет :)

Хм. Не совсем понятно, а как ты представляешь проверку количества секунд, прошедших после вызова функции, не используя сигналы,потомков или "нитки"?

>Рабочую часть почти дописал :) Осталось окончательно утвердить протокол и саму сеть  
>приделать. Серверную часть полностью проверил - пока работает без глюков :)
>
>Недавно пересматривал, а потом и переписывал конфигурацию сервера. Сейчас можно указать откуда
>таскать данные по запросу такой-то программы с такой-то машины. Вообще из
>написанного конфигурация мне больше всего понравилась - достаточно гибкая уже сейчас
>и имеются идеи для дальнейших модификаций :)
>
>Взявши за основу libnss_pgqsl я полностью переделал backend.c Сейчас nss-модуль вообще не
>зависит от какой бы то ни было базы данных. Он цепляется
>к своему серверу, который уже и соединяется с конкретной базой. В
>этом есть и недостатки и немалые преимущества. Надо будет туда еще
>dlopen впихнуть, дабы можно было пользовать разные базы в зависимости от
>конфигурации :)
>
>PS. В этом всем деле самое интересное другое - откуда будут браться
>данные по запросу getpwent или getgrent.

Ну у меня все попроще будет :).  А вообще удачи тебе :)))

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "В очередной раз про таймеры..."
Сообщение от XMan Искать по авторуВ закладки on 18-Мрт-03, 16:29  (MSK)
> Хм. Не совсем понятно, а как ты представляешь проверку количества секунд, прошедших после вызова функции, не используя сигналы,потомков или "нитки"?

Вот потому-то я и спрашиваю :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру