【发布时间】:2013-09-02 05:04:07
【问题描述】:
在 Linux 机器上,您有一个监听 TCP 端口 A 的守护程序。但是,它通常被停止,因为它很少使用并且占用了大量的系统资源。相反,我想做这样的事情:
编写一个侦听端口 B 的应用程序,并在建立连接后立即执行以下操作:如果守护程序已停止,则启动它并等待它侦听端口 A。现在是困难的部分:以完全透明的方式将客户端连接到守护程序,即客户端不必重新连接端口 A。另外,但这与这个问题无关,应用程序将在一段时间内没有连接时关闭守护进程。
当然,我可以让我的应用程序连接到守护程序并通过管道传输所有通信。我不要那个。我想要某种方式将已建立的连接转发到守护程序,然后摆脱连接的套接字,而客户端现在很高兴地与守护程序连接。在某种程度上,我想给守护进程我的已经连接的套接字。有没有办法做这样的事情?
我正在运行 Debian,如果这很重要的话。我想用 C/C++ 编写应用程序,并且可以使用特定于操作系统的解决方案(即使用系统调用)。不过请原谅我,我不是一个 Linux 编码员,所以我对 Linux 系统编程不是很熟悉。如果有一些明显的方法可以做到这一点,我根本不知道。
当然,我愿意接受任何建议。
【问题讨论】:
标签: c linux sockets debian system-calls