Управление работам (процессами)!
Общая постановка задачи такая: необходимо организовать и постоянно поддерживать несколько telnet сессий одновременно. (Если точнее не просто telnet, а tn3270). Кроме того, необходимо иметь к ним программный доступ. (Отправлять и команды и получать ответы на них из приложения написанного на shell (bash, sh …).
Как разовая, эта задача не сложная и она решена. Но она решена в виде одного программного модуля. Т.е. внутри одной программы (процесса) выполняется запуск терминала, установка соединения, передача команд, получение ответа и разрыв соединения. Однако на запуск терминала и установку соединения уходит достаточно много времени. Поэтому хотелось бы один раз запустить в фоновом режиме (background) терминал и установить соединение, а затем каждый раз подключаться к этому процессу. И здесь возникают вопросы.
-
Каким образом можно управлять процессами (точнее работами Job) программно. Ведь команды управления работами (fg, bg, jobs …) работают с номерами работ, а не с PID (номерами процессов). И эти номера работ, доступны только в том экземпляре shell (процессе) , в котором они запущены. Существуют ли команды, аналогичные fg , bg но работающие с процессами (pid ) ? Или как программно получить доступ к номерам работ ?
-
Возможно ли переподключение процессов к уже открытому соединению (pipe)?
Я делаю так: cоздаю временный файл (fifo) и перенаправляю туда ввод и вывод запущенного в фоновом режиме (&) процесса. Затем, в нужный момент подключаюсь к этому файлу другим процессом. Это работает нормально, поскольку pipe активизируется, когда она “открыта” с двух сторон. Но это работает только один раз.
Возможно ли отключить второой процесс и подключить вместо него другой ?
Заранее благодарен, если Вы сможете мне чем либо помочь.
Vi