Как написать программу на C, которая присоединяет / отсоединяет от терминала Unix? - PullRequest
0 голосов
/ 27 мая 2018

Я написал интерактивную программу Unix, которая работает на терминале.Иногда я оставляю его работающим, а затем возвращаюсь домой, но тогда я не могу взаимодействовать с запущенным процессом через ssh.

Есть решения для этого, такие как использование экрана Gnu и т. Д., Но насколько сложно создать эту функциональностьв мою программу?Например, скажите, что моя программа называется «prog», и скажите, что она работает в терминале.Теперь представьте, что я захожу через ssh.Я хотел бы написать что-то вроде

$ prog move

или около того в командной строке и сделать так, чтобы работающая программа передавала себя в терминал сеанса ssh.Это должно быть возможно, но трудно ли это сделать?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Отсоединить довольно просто (см. Функцию daemon).Повторное присоединение является более болезненным, в основном состоит из маршрутизации ввода и вывода через именованный сокет, а второй вызов действует как реле для этого сокета.Но в целом, это глупо встраивать в программу, потому что это не то, для чего она предназначена.Это все равно что встроить почтовый клиент в ваш текстовый редактор, на тот случай, если кто-то захочет проверить свою электронную почту во время редактирования чего-либо.

Если screen слишком тяжелый для ваших нужд, попробуйте dtach*Программа 1009 *, которая была разработана, чтобы быть обернутой вокруг одного приложения (и хорошо работает в сценариях оболочки).Если вы должны засунуть это в свое приложение, лучшим подходом, вероятно, будет включение источника из dtach.

0 голосов
/ 27 мая 2018

Напишите вашу программу из 2 частей.

Первая часть - это система, которая работает непрерывно, которая просматривает файл или канал.

Секунды - это программа командной строки,который пишет в трубу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...