我有一个启动成本很高的交互式程序。启动后,我想将该过程分成单独的并发会话。理想情况下,每个单独的会话都将成为一个GNU 屏幕窗口,但能够单独 telnet/ssh 到每个会话也可以。
从头开始写这个应该不会太难,但似乎以前应该做/考虑过一些事情,也许这是一个坏主意的原因......
我知道另一种方法是使用共享内存来存储初始化成本很高的数据。我不愿意走这条路的原因是共享数据使用带有指针的 C++ 数据结构,这使得很难将其映射到不相关的进程中。
我有一个启动成本很高的交互式程序。启动后,我想将该过程分成单独的并发会话。理想情况下,每个单独的会话都将成为一个GNU 屏幕窗口,但能够单独 telnet/ssh 到每个会话也可以。
从头开始写这个应该不会太难,但似乎以前应该做/考虑过一些事情,也许这是一个坏主意的原因......
我知道另一种方法是使用共享内存来存储初始化成本很高的数据。我不愿意走这条路的原因是共享数据使用带有指针的 C++ 数据结构,这使得很难将其映射到不相关的进程中。
这就是任何数据库所做的——启动非常昂贵,但数据库提供了几种不同的连接方式——例如 Oracle 的 BEQ 协议。
Telnet 有问题,考虑 ssh。无论哪种方式,考虑一个守护进程来回答端口上的连接请求(我猜你会使用 AF_UNIX 套接字),然后创建一个单独的会话。
Stevens Advanced Programming in the UNIX Envrionment 或 Rochkind 的 Advanced UNIX Programming 有讨论和完整示例。由于我的 Stevens 书似乎已经放假了,请参阅 Rochkind 4.3 和 4.10。
不,使用这种方法没有悬而未决的厄运。