Цитата(admsasha @ 7.12.2017, 03:43 ) | Нет, это не помогат. Как видно из кода, следующая операция после sleep закрытие библиотеки. |
Это не важно. Важно то, что библиотека при dlopen мапируется в память, и если вы ее в это время начинаете менять на файловой системе (например переписывать), то может измениться и образ в памяти (это зависит от того, как динамический загрузчик мапировал библиотеку в память). А dlclose потом полезет читать рантайм динамические данные, что бы удалить инфу о загруженной библиотеке из памяти. Если образ был изменен, то тот мусор, который прочтет линкер, может сломать всё.
Если файл библиотеки сначала удалить, и лишь потом переписывать, то образ в памяти окажется привязан к предыдущей версии файла (которую удалили), а записываться будет новая - и в память это не попадет.
|