LINUX.ORG.RU

Проблема во взаимодействии lpthread с fork и socket


0

0

Пишу программу, в которой используется для весьма глючное внешнее устройство. Фирменная библиотека для работы с ним тоже особой одиренноть не отлячается. однако устройство необходимо. Программа с использванием данной библиотеки должна компилиться со след. опциями: -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

anonymous

Можно попробовать выбросить -lpthread и добавить опцию -pthread

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.