LINUX.ORG.RU

Аналог виндового LoadLibrary есть?


0

0

В винде есть прекрасная возможность не перезапуская программу динамически менять саму программу посредством загрузки и выгрузке DLL из самой же программы. (ф-и LoadLibrary, FreeLibrary). В Linuxe so-шки можно загружать и выгружать?

anonymous

dlopen(), dlclose(), dlsym() - Linux, Solaris, AIX, Tru64;
shl_load(), shl_unload(), shl_findsym() - HPUX.

proff
()

На самом деле, то что есть в винде, по всем видам системного программирования (не берусь судить GUI), есть жалкое подобие того, чем нас радует UNIX.

proff
()

2Havoc: самый простейший пример из разряда syscalls: msgget(), semget(), mknod(), sigaction(), fork(), poll() и много много других характерных отличий.
p.s. а как винда работает с пайпами [pipe()] - это ли не показательно?

proff
()

Архитектуры разные, вот и по другому.
А сделать можно все.

ЗЫ. у меня есть опыт и там и там.
Скоро еще под мак писать буду :)

Havoc ★★★★
()

вопрос на сколько я понимаю не стоит "здесь такое сделать можно, а тут принципиально нет".
мо-моему вопрос стоит иначе: насколько легче программировать и насколько изящнее получаются закодированные алгоритмы.

идем далее, про различие архитектур. ниже я хочу показать, что дело не в архитектуре и что при различии последних может быть хорошая совместимость по интерфейсам, что само по себе означает идентичность поведения софта под различными платформами. а это именно то, что должно быть на выходе этапа портирования.

для примера возьмем QNX RTP. она вообще ничего общего с архитектурой ОС с монолитным ядром (классический UNIX) не имеет, кроме программного интерфейса, совместимого с POSIX. но тем не менее, софт под нее портируется гораздо легче, чем на WinNT. и выглядит процесс портирования с архитектурной точки зрения гораздо лучше, и это при том, что различия между Linux и той же WinNT - с точки зрения ядра ОС - значительно меньшие, чем между Linux и QNX RTP.

так что архитектура тут ни при чем, т.к. архитектура - есть отображение тех задач, которые призвана решать система.

p.s. многие портировали свои проги на винду, в том числе и я. и обычно иничего кроме

#ifdef WIN32
#else /* POSIX */
#endif /* WIN32 */

не получалось. а как в школе еще учили - условная компиляция - самое худшее из всех возможных решений по переносимости.

proff
()

А вместо элементарного WaitForSingleObject в юнихе приходится извращаться серьезнее, особенно если нить detached

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