Russian Qt Forum
Ноябрь 23, 2024, 04:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с демоном в Linux  (Прочитано 5112 раз)
dssoft
Гость
« : Июль 19, 2005, 23:47 »

На днях столкнулся с такой вот проблемой.

Стоит: Red Hat Linux release 9 (Shrike) + Apache 2.0.40. Есть скрипт на PHP, который с помощью exec() запускает сишную прогу myprogram. myprogram делает fork() и работает как демон. Открывает при работе только одно исходящее соединение, порты не слушает.

Запускаю через браузер свой PHP-скрипт. Он запускает сишную программу. Все работает отлично.

Затем мне понадобилось перезапустить Web-сервер. Делаю: service httpd stop. Но после того, как я обратно сделал service httpd start, получил ошибку:

make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down

Хм, 5 минут назад все ж отлично работало. Делаю netstat -nlp и вижу такую картину:

Код:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
...
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      14656/myprogram
...


Т.е. myprogram с правами apache умудрилась занять 443-й порт, который занимал Web-сервер! Причем, если запустить две копии myprogram, она займет порты 80 и 443.

Как можно справиться с этой проблемой? Т.е. чтобы моя программа не начинала слушать порты Web-сервера после его остановки.

Спасибо.
Записан
DmitriyDMA
Гость
« Ответ #1 : Февраль 21, 2006, 14:19 »

Создается впечатление что когда вы делаете fork() то новый процесс получает копию памяти веб-сервера и соответственно объект(или неважно что) который слушает tcp порт. Надо делать fork из чистого процесса не знаю каким образом, или удалять ненужные объекты. Можно посмотреть на vfork   он вроде не делает копию адресного пространства родительского процесса.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.042 секунд. Запросов: 20.