Как получить имя процесса из .so библиотеки? (на c)

Модератор: Модераторы разделов

lsh
Сообщения: 23

Как получить имя процесса из .so библиотеки?

Сообщение lsh »

Есть .so либа.
Как внутри нее узнать имя процесса, в который она загружена?

Спасибо!
Спасибо сказали:
AleXXandEr
Сообщения: 79
ОС: Debian sarge 3.1

Re: Как получить имя процесса из .so библиотеки?

Сообщение AleXXandEr »

$ lsof /usr/lib/libGL.so
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
ksmserver 3774 alex mem REG 8,1 900376 5636136 /usr/lib/libGL.so.180.29
kwin 3776 alex mem REG 8,1 900376 5636136 /usr/lib/libGL.so.180.29

если я тя прально понял :)
Спасибо сказали:
lsh
Сообщения: 23

Re: Как получить имя процесса из .so библиотеки?

Сообщение lsh »

Спасибо.
Не то. Я пишу библиотеку и внутри одной из ее ф-й мне надо узнать имя екзешника.
В моем случае оказалось все проще, т.к. в GTK есть g_get_prgname () и мне вполне подходит.
Но это не универсально. Я думаю, вопрос можно оставить открытым (для общего развития).
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Как получить имя процесса из .so библиотеки?

Сообщение Portnov »

Ну вариант - вызвать getpid() и прочитать файл /proc/<pid>/cmdline.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Как получить имя процесса из .so библиотеки?

Сообщение nesk »

Portnov писал(а):
06.03.2009 23:40
Ну вариант - вызвать getpid() и прочитать файл /proc/<pid>/cmdline.


проще : /proc/self/cmdline

Но это только в linux.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали: