Гость Опубликовано 24 декабря, 2002 Жалоба Поделиться Опубликовано 24 декабря, 2002 Управление работам (процессами)! Общая постановка задачи такая: необходимо организовать и постоянно поддерживать несколько telnet сессий одновременно. (Если точнее не просто telnet, а tn3270). Кроме того, необходимо иметь к ним программный доступ. (Отправлять и команды и получать ответы на них из приложения написанного на shell (bash, sh ...). Как разовая, эта задача не сложная и она решена. Но она решена в виде одного программного модуля. Т.е. внутри одной программы (процесса) выполняется запуск терминала, установка соединения, передача команд, получение ответа и разрыв соединения. Однако на запуск терминала и установку соединения уходит достаточно много времени. Поэтому хотелось бы один раз запустить в фоновом режиме (background) терминал и установить соединение, а затем каждый раз подключаться к этому процессу. И здесь возникают вопросы. 1. Каким образом можно управлять процессами (точнее работами Job) программно. Ведь команды управления работами (fg, bg, jobs ....) работают с номерами работ, а не с PID (номерами процессов). И эти номера работ, доступны только в том экземпляре shell (процессе) , в котором они запущены. Существуют ли команды, аналогичные fg , bg но работающие с процессами (pid ) ? Или как программно получить доступ к номерам работ ? 2. Возможно ли переподключение процессов к уже открытому соединению (pipe)? Я делаю так: cоздаю временный файл (fifo) и перенаправляю туда ввод и вывод запущенного в фоновом режиме (&) процесса. Затем, в нужный момент подключаюсь к этому файлу другим процессом. Это работает нормально, поскольку pipe активизируется, когда она "открыта" с двух сторон. Но это работает только один раз. Возможно ли отключить второой процесс и подключить вместо него другой ? Заранее благодарен, если Вы сможете мне чем либо помочь. Vi Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AndreyMust19 Опубликовано 11 апреля, 2009 Жалоба Поделиться Опубликовано 11 апреля, 2009 Цитата: 1. Каким образом можно управлять процессами У процесса есть GID, идентификатор группы, которой он принадлежит. Я так думаю, что это число ассоциируется с заданием (job, или "работа", как ты сказал). Задание - это всего лишь группа процессов, наследующие общие привилегии, как я понимаю. Единственный способ работать с заданиями - узнавать GID процесса вручную и тем самым определять - принадлежит он нашему заданию или нет. Цитата: 2. Возможно ли переподключение процессов к уже открытому соединению (pipe)? Цитата: Возможно ли отключить второой процесс и подключить вместо него другой ? Думаю, что проблем быть не должно - 2-ой процесс закрывает чтение из pipe, а новый процесс открывает его для чтения. Знаю еще что, что файл можно открыть с флагом "не закрывать после exec". При вызове exec этот файл остается открытым и достанется запущенной программе. Может это как-то поможет. P.S. Я нуб в программировании для UNIX и может в чем-то ошибаюсь. Цитата: Но это работает только один раз. Не понял. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.