Это то, что я хочу сделать:
$ serverise normally-barely-interactive-program-that-uses stdin stdout &<br>
unique-id-221B
$ clienty 221B "Astonishing!"<br>
Elementary<br>
$ clienty 221B "what did I just say?"<br>
'Astonishing', although the methods are simple and easily followed, once explained.<br>
$ clienty 221B "so, you persist between invokations of the client?"<br>
Indeed.
Я пробовал двойные именованные каналы, но они только для последнего вызова.Я думаю, это потому, что серверная сторона получает EOF и поэтому предполагает, что stdin был закрыт пользователем.
Сокеты, похоже, являются подходящим вариантом, но большинство оболочек предполагают http-подобную модельи отключать новую программу каждый раз, когда кто-то подключается.Сокат кажется нормальным, но он тоже умирает после одного удара.
Я видел, как для этого использовались Gnu Screen и Tmux, но это кажется излишним, и, честно говоря, я не могу предположить, что среда пользователя выигралане содержит ни того, ни другого, и поэтому любое подобное решение было бы немного хрупким перед лицом нестандартных конфигов тех.Это также кажется немного излишним.
Это похоже на проблему, которая возникла бы раньше, поэтому я, должно быть, искал не в том месте, чтобы найти небольшую утилиту, которая делает это.