Можно ли передавать ресурсы через IPC? - PullRequest
0 голосов
/ 08 марта 2011

Можно ли передавать ресурсы (файловые дескрипторы, FTP-соединения, базы данных) через IPC (межпроцессное взаимодействие)?

Ответы [ 2 ]

2 голосов
/ 08 марта 2011

Это скорее зависит от типа МПК.В общем, IPC - это способ перемещения байтов, поэтому нет.

Однако некоторые unix-системы имеют некоторую способность перемещать другие объекты.Например, Linux может отправлять файловые дескрипторы (которые я думаю включает в себя сокеты) через сокет unix-домена (и поток, и датаграмму, я полагаю) - вы должны использовать процедуру sendmsg, передавая структуру msghdr, содержащую указатель вспомогательных данных, указывающий на файловые дескрипторы в массиве, и выполняя необходимые заклинания (SCM_RIGHTS и т. д.).Затем другая сторона получит их как рабочие дескрипторы файлов в соответствующей структуре msghdr, хотя, конечно, фактические числа дескрипторов файлов могут отличаться.Вы также можете отправить учетные данные процесса таким образом;Это неопровержимое доказательство подлинности процесса, отправляющего их, что полезно для различных непонятных целей.

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

1 голос
/ 08 марта 2011

В windows дескрипторы файлов и сокетов могут дублироваться для другого процесса, выполняющегося в той же системе, и передаваться этому процессу с помощью IPC.

«Соединение с базой данных» - это термин, специфичный для используемого вами механизма соединения с БД. Возможно, что некоторые «соединения» могут быть общими, но это, скорее всего, будет совместное использование строки соединения.

Соединения FTP могут быть разделены путем дублирования дескриптора сокета (если ваш код), или вы можете передать URL-адрес FTP другому процессу.

...