5

在 Linux 机器上,你有一个监听 TCP 端口A的守护进程。但是,它通常被停止,因为它很少使用并且占用了大量的系统资源。相反,我想做这样的事情:

编写一个侦听端口B的应用程序,并在建立连接后立即执行以下操作:如果守护程序已停止,则启动它并等待它侦听端口A。现在是困难的部分:以完全透明的方式将客户端连接到守护程序,即客户端不必重新连接端口A。另外,但这与这个问题无关,当一段时间没有连接时,应用程序将关闭守护程序。

当然,我可以让我的应用程序连接到守护进程并通过管道传输所有通信。我不要那个。我想要某种方式将已建立的连接转发到守护程序,然后摆脱连接的套接字,而客户端现在很高兴地与守护程序连接。在某种程度上,我想给守护进程我已经连接的 socket。有没有办法做这样的事情?

我正在运行 Debian,如果这很重要的话。我想用 C/C++ 编写应用程序,并且可以使用特定于操作系统的解决方案(即使用系统调用)。不过请原谅我,我不是一个 Linux 编码员,所以我对 Linux 系统编程不是很熟悉。如果有一些明显的方法可以做到这一点,我根本不知道。

当然,我愿意接受任何建议。

4

1 回答 1

3

这个问题有一个预先存在的标准解决方案,通常称为inetd。它已经存在了很长时间,首先是在 Unix 系统中,然后是 Linux。

更现代的实现是xinetd

于 2013-08-29T17:29:57.847 回答