Рассматривая, как задания Linux и работы владения процесса, я боюсь, что не действительно возможно повторно владеть процессом без справки от процесса принятия.
Родитель может 'отрицать' ребенка, который затем 'усыновлен' процессом, названным 'init'. Безопасность системы препятствует тому, чтобы кто-то захватил чужие процессы. При отрицании его процесс становится чужой (init's) для управления. Вы как 'пользователь' могли все еще уничтожить процесс, но Вы не можете вернуть его. Попытка принудить init для возврата процесса вряд ли будет работать, поскольку init даже не читает почту.
Столь средний, как это звучит, это действительно сводится к ответу, "Не делают этого!".
Каковы обстоятельства? Если Вы просто хотите вернуть свой терминал некоторое время, Вы могли бы использовать Экран GNU вместо этого. Это не вполне отсоединяет процесс от терминала - Экран эмулирует один для преимущества процесса - но можно присоединить и отсоединить его от реального терминала, который Вы используете. Можно даже отсоединить экран, выйти из системы, затем войти в и повторно прикрепить к тому же экрану.
Извините, нет. В принципе это было бы возможно, начиная с отрицания просто изменяет некоторое внутреннее состояние оболочки — это в основном удаляет идентификатор процесса из списка, и это могло быть отложено без слишком большого количества стычки (необходимо будет быть немного осторожными в тестировании, что повторно прикрепленный pid находится на правильной сессии, но это весьма преодолимо). Но ни одна из обычных оболочек (удар, ksh, tcsh, zsh), кажется, не имеет способа повторно добавить. (Хотя с zsh можно записать в jobstates
, jobdirs
и jobtext
ассоциативные массивы; я не знаю, насколько можно достигнуть того пути.)
Если Вы хотите, чтобы оболочка отправила сигналы в отрицаемый процесс, как это делает для его находящихся в собственности подпроцессов, можно записать тупиковое задание, которое ожидает, пока это не получает сигнал и отправляет тот же сигнал в отрицаемый процесс. Можно отправить SIGSTOP
и SIGCONT
к отрицаемому процессу для моделирования Ctrl+Z и bg
. Ни одно из этого не будет вполне так же удобно как перевладение.
В то время как я предполагаю, что это не помогает никому в неудачной ситуации того, что отрицало неправильный процесс, если необходимо было выслать, отрицают от рабочего процесса и заменяют его:
https://github.com/nelhage/reptyr
Вы смогли бы повторно породить любой процесс (т.е. переместить его в экране).