Как раскошелиться на интерактивные программы - PullRequest
0 голосов
/ 13 октября 2011

У меня есть интерактивная программа с высокой стоимостью запуска.После запуска я бы хотел разделить процесс на отдельные параллельные сеансы.В идеале каждый отдельный сеанс должен был бы стать окном GNU screen , но с возможностью индивидуального подключения telnet / ssh к каждому сеансу тоже было бы неплохо.

Не должно быть слишком сложно написать это с нуля.но это кажется чем-то, что должно было быть сделано / рассмотрено раньше, и, возможно, есть причины, по которым это плохая идея ...

Я знаю, что альтернативный подход заключается в использовании разделяемой памяти для данных, которые дороги дляинициализации.Причина, по которой я не хочу идти по этому пути, заключается в том, что совместно используемые данные используют структуры данных C ++ с указателями, что затрудняет их преобразование в несвязанный процесс.

1 Ответ

0 голосов
/ 14 октября 2011

Это то, что делает любая база данных - запуск феноменально дорог, но БД предоставляет несколько различных способов подключения - пример протокола Oracle BEQ.

У Telnet есть проблемы, рассмотрим ssh. В любом случае, рассмотрим демон, который отвечает на запросы на подключение через порт (я думаю, вы бы использовали сокеты AF_UNIX), а затем создаёт отдельный сеанс.

Расширенное программирование Стивенса в UNIX Enririonment или Расширенное программирование UNIX Рочкинда содержит обсуждения и полные примеры. Так как моя книга Стивенса, кажется, ушла в длительный отпуск, см. Rochkind 4.3 и 4.10.

И нет, для использования этого подхода нет ожидающей гибели.

...