URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5557
[ Назад ]

Исходное сообщение
"Проблемя взаимодействия fork и socket с библиотеками"

Отправлено ibm , 07-Июл-06 21:55 
Пишу программу, в которой используется для весьма глючное внешнее
устройство.
Фирменная библиотека для работы с ним тоже особой одиренноть не отлячается.
однако устройство необходимо. Программа с использванием данной библиотеки
должна компилиться со след. опциями: -lxerces-c -ldl -lpthread -lc -lSDL.
Признаюсь честно ни с одной из этих библиотек до селе не работал. Проблемы
следующие;
1) При вызове fork(): Когда chil процесс завершает свою работ после вызова
return (в дочернем процессе) родительский не получает SIGCHILD и waitpid не
вызывается поскольку сигнала нет.
Мало того дочерний процесс в таблице процессов обозначается как обычнай
процесс, а не как зомби. Дочерний процесс при этом точно доходит до rerurn.

2) При вызове:
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
создается    3 процесса такого вида:
appolo:# pstree -a
  |   |-bash
  |   |   -all.bin    
  |   |       |-all.bin
  |   |       |   -all.bin               <- Cоздаються при вызове  socket
  |   |       -all.bin                    <- Остаток от fork

Подскажите что можно тут сделать. Одно точно, что если выкинуть это
устройство с его библиотекой все работает как надо и fork и socket


Содержание

Сообщения в этом обсуждении
"Проблемя взаимодействия fork и socket с библиотеками"
Отправлено DeadMustdie , 09-Июл-06 15:52 
Ручаться не буду, но все очень похоже на старый-старый Linux плюс
мерзость по имени LinuxThreads плюс библиотеки, пользующие оный
LinuxThreads.
(а) апгрейд ОС должен помочь
(б) можно чуток пересмотреть логику программы и обойтись-таки
pthread'ами вместо fork()'а.