[Comm] pthread, gcc vs g++: seg fault

Rinat Bikov bikoz.r на gmail.com
Чт Ноя 5 19:20:43 UTC 2009


5 ноября 2009 г. 17:04 пользователь Sergey Vlasov написал:
[...]
>  1) Аккуратно писать код, который нужно прерывать[...]
Это решение мне точно не подходит, так как по задумке прерываться
должен не мой код... + код на любом языке программирования,
поддерживающий создание динамических библиотек и как минимум для 2-х
платформ: Linux и Windows.

>  2) Создавать для выполнения кода, который необходимо прерывать, не
>    поток, а полноценный процесс [..]
Ммм... В таком случае будет сложнее взаимодействие: для того, чтобы
освободить модулеписателей от необходимости изучать межпроцессовое
взаимодействие, мне нужно будет написать как минимум ещё 2 модуля:
один со стороны моей программы, вызывающий процесс, другой -
вызываемый процесс, используемый для загрузки динамической
библиотеки... .oO(интересно, это решение будет портируемо под Win?..)

Спасибо большое за подробное разъяснение! Буду иметь ввиду...

P.S. А пока я написал какой-то хак для GCC, так как работает то, что
не должно работать :-). Если убрать вывод в поток ошибок из
обработчика сигнала SIGTERM, то программа, скомпилированная под GCC
также завершается с segmentation fault... :-)
P.P.S. А всё это я задумал только для того, чтобы научиться выгружать
динамические библиотеки из Java-программы :-)... Хотя, для этого есть
ещё один вариант: убивать из Java поток вместе с моей библиотекой, а в
самой библиотеке не использовать pthread... (чего хотелось было
избежать для красоты решения, однако сейчас этот способ выглядит для
меня наиболее простым и безопасным, но решение с процессами интересное
с точки зрения изучения :-)).

-- 
С уважением, Ринат Биков.


Подробная информация о списке рассылки community