Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > сокеты, pid процесса


Автор: block 26.8.2008, 09:03
Приветствую.
Что-то подзабыл... Два процесса общаются через сокет( socket(PF_LOCAL, SOCK_STREAM, 0) ), как можно узнать pid второго процесса?

Автор: GrayCardinal 26.8.2008, 09:16
block
Аф локал плюс соцк стрим. Чего-то не догоняю что это.
А на счет вопроса - скорее всего никак smile Ну, только если передать smile

Автор: block 26.8.2008, 09:46
Цитата

Аф локал плюс соцк стрим. Чего-то не догоняю что это.


http://masters.donntu.edu.ua/2005/fvti/lukyanov/library/ipc/socket.html

Автор: GrayCardinal 26.8.2008, 11:35
block
Да ? А я думал аф локал только с юдпишкой работает smile

Автор: MAKCim 26.8.2008, 22:30
Цитата(GrayCardinal @  26.8.2008,  09:16 Найти цитируемый пост)
А на счет вопроса - скорее всего никак

ну как же никак?  smile 
1. через getsockname получаем адрес (struct sockaddr_un), из него достаем PATH
2. открываем /proc/net/unix и ищем там PATH, ему будет соответствовать номер inode в виртуальной ФС сокетов
3. проходим по /proc/<pid>/fd/<number> для всех pid и number, через readlink() (man 2 readlink) читаем линки
для файловых дескрипторов сокетов значение, возвращаемое readlink()-ом выглядит так
socket:[inode], где inode - номер, полученный на шаге 2.

Автор: block 27.8.2008, 07:39
MAKCim,
Спасибо, все понятно, тему закрываю.

Автор: GrayCardinal 28.8.2008, 09:30
MAKCim
Зачет smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)