可以通过IPC传递资源吗?

发布于 2024-10-21 09:37:50 字数 47 浏览 3 评论 0 原文

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

Is it possible to pass resources (file handles, FTP connections, database connections) via IPC (interprocess communication)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鲜血染红嫁衣 2024-10-28 09:37:50

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

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

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

It rather depends on the kind of IPC. In general, IPC is a way to move bytes, so no.

However, some unixes have some capacity to move other objects. For example, Linux can send file descriptors (which i think includes sockets) over a unix-domain socket (both stream and datagram, i believe) - you have to use the sendmsg routine, passing in a msghdr struct containing an ancillary data pointer pointing to the file descriptors in an array, and performing the necessary incantations (SCM_RIGHTS and so on). The other side will then receive them as working file descriptors in a corresponding msghdr struct, although of course the actual numbers of the file descriptors might be different. You can also send process credentials this way; these are an unforgeable proof of the identity of the process sending them, which is useful for various obscure purposes.

Whether you can move higher-level objects depends on whether they are built out of file descriptors and bytes. However, note that you would have to write code to move these things; you wouldn't expect to be able to send them out of the box.

攒眉千度 2024-10-28 09:37:50

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

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

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

In windows file and socket handles can be duplicated for another process running on the same system and passed to this process using IPC.

"Database connection" is a term specific to the DB connection mechanism you use. It's possible that some "connections" can be shared, but this will be most likely sharing a connection string.

FTP connections can be shared by duplicating socket handle (if the code is yours) or you can pass the FTP URL to another process.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文