# Process & jobs

**URL:** <https://linux.ru/forum/t/process-jobs/85429>\
**Category:** Программирование: \*nix\
**Created:** [24.Декабрь.2002 08:49:50 UTC](https://linux.ru/forum/t/process-jobs/85429 "2002-12-24T08:49:50Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Guest](https://linux.ru/forum/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@Guest](https://linux.ru/forum/u/Guest)\
**Post date:** [24.Декабрь.2002 08:49:50 UTC](https://linux.ru/forum/t/process-jobs/85429/1 "2002-12-24T08:49:50Z")

</div>

Управление работам (процессами)!

Общая постановка задачи такая: необходимо организовать и постоянно поддерживать несколько telnet сессий одновременно. (Если точнее не просто telnet, а tn3270). Кроме того, необходимо иметь к ним программный доступ. (Отправлять и команды и получать ответы на них из приложения написанного на shell (bash, sh …).

Как разовая, эта задача не сложная и она решена. Но она решена в виде одного программного модуля. Т.е. внутри одной программы (процесса) выполняется запуск терминала, установка соединения, передача команд, получение ответа и разрыв соединения. Однако на запуск терминала и установку соединения уходит достаточно много времени. Поэтому хотелось бы один раз запустить в фоновом режиме (background) терминал и установить соединение, а затем каждый раз подключаться к этому процессу. И здесь возникают вопросы.

1. Каким образом можно управлять процессами (точнее работами Job) программно. Ведь команды управления работами (fg, bg, jobs …) работают с номерами работ, а не с PID (номерами процессов). И эти номера работ, доступны только в том экземпляре shell (процессе) , в котором они запущены. Существуют ли команды, аналогичные fg , bg но работающие с процессами (pid ) ? Или как программно получить доступ к номерам работ ?

2. Возможно ли переподключение процессов к уже открытому соединению (pipe)?

Я делаю так: cоздаю временный файл (fifo) и перенаправляю туда ввод и вывод запущенного в фоновом режиме (&) процесса. Затем, в нужный момент подключаюсь к этому файлу другим процессом. Это работает нормально, поскольку pipe активизируется, когда она “открыта” с двух сторон. Но это работает только один раз.

Возможно ли отключить второой процесс и подключить вместо него другой ?

Заранее благодарен, если Вы сможете мне чем либо помочь.

Vi

---

<div class="post-metadata">

**Author:** ![AndreyMust19](https://linux.ru/forum/letter_avatar_proxy/v4/letter/a/3da27b/32.png) [@AndreyMust19](https://linux.ru/forum/u/AndreyMust19)\
**Post date:** [11.Апрель.2009 19:08:31 UTC](https://linux.ru/forum/t/process-jobs/85429/2 "2009-04-11T19:08:31Z")

</div>

| **Цитата:** |  
|

1. Каким образом можно управлять процессами

|

У процесса есть GID, идентификатор группы, которой он принадлежит. Я так думаю, что это число ассоциируется с заданием (job, или “работа”, как ты сказал).

Задание - это всего лишь группа процессов, наследующие общие привилегии, как я понимаю. Единственный способ работать с заданиями - узнавать GID процесса вручную и тем самым определять - принадлежит он нашему заданию или нет.

| **Цитата:** |  
|

1. Возможно ли переподключение процессов к уже открытому соединению (pipe)?

|

| **Цитата:** |  
|

Возможно ли отключить второой процесс и подключить вместо него другой ?

|

Думаю, что проблем быть не должно - 2-ой процесс закрывает чтение из pipe, а новый процесс открывает его для чтения. Знаю еще что, что файл можно открыть с флагом “не закрывать после exec”. При вызове exec этот файл остается открытым и достанется запущенной программе. Может это как-то поможет.

P.S. Я нуб в программировании для UNIX и может в чем-то ошибаюсь.

| **Цитата:** |  
|

Но это работает только один раз.

|

Не понял.
