可以通过IPC传递资源吗?

时间:2011-03-08 15:47:31

标签: resources ipc

是否可以通过IPC(进程间通信)传递资源(文件句柄,FTP连接,数据库连接)?

2 个答案:

答案 0 :(得分:2)

这取决于IPC的类型。一般来说,IPC是一种移动字节的方法,所以没有。

但是,有些unix具有移动其他对象的能力。例如,Linux可以通过unix-domain socket(我相信流和数据报)发送文件描述符(我认为包括套接字) - 你必须使用sendmsg例程,传入一个msghdr struct包含指向数组中文件描述符的辅助数据指针,并执行必要的咒语(SCM_RIGHTS等)。然后,另一方将在相应的msghdr结构中将它们作为工作文件描述符接收,尽管文件描述符的实际数量当然可能不同。您也可以这种方式发送流程凭证;这些是发送它们的过程的身份的难以证明的证据,这对于各种模糊的目的是有用的。

是否可以移动更高级别的对象取决于它们是由文件描述符和字节构建的。但是,请注意,您必须编写代码来移动这些东西;你不会期望能够将它们开箱即用。

答案 1 :(得分:1)

在Windows文件中,可以为在同一系统上运行的另一个进程复制套接字句柄,并使用IPC将其传递给此进程。

“数据库连接”是特定于您使用的数据库连接机制的术语。可能会共享某些“连接”,但这很可能会共享一个连接字符串。

可以通过复制套接字句柄(如果代码是您的)来共享FTP连接,也可以将FTP URL传递给另一个进程。

相关问题