这就是我想要做的:
$ serverise normally-barely-interactive-program-that-uses stdin stdout &
unique-id-221B
$ clienty 221B "Astonishing!"
Elementary
$ clienty 221B "what did I just say?"
'Astonishing', although the methods are simple and easily followed, once explained.
$ clienty 221B "so, you persist between invokations of the client?"
Indeed.
我尝试过双命名管道,但它们只最后一次调用。我认为这是因为服务器端获得了 EOF,因此假设标准输入已被用户关闭。
套接字似乎是要走的路,但大多数包装器都采用类似 http 的模型,并且每次有人连接时都会派生一个新程序。socat 看起来还可以,但它也只是一口气就死了。
我已经看到用于此的 Gnu Screen 和 Tmux,但这似乎有点矫枉过正,老实说,我不能假设用户的环境不会包含任何一个,因此任何像这样的解决方案在脸上都会有点脆弱那些的非标准配置。这似乎也有点矫枉过正。
这似乎是一个以前会出现的问题,所以我必须在错误的地方寻找执行此操作的时髦的小实用程序。