Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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, Аф локал плюс соцк стрим. Чего-то не догоняю что это. А на счет вопроса - скорее всего никак ![]() ![]() |
Автор: 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, Да ? А я думал аф локал только с юдпишкой работает ![]() |
Автор: MAKCim 26.8.2008, 22:30 |
ну как же никак? ![]() 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, Зачет ![]() ![]() |