Мне открыли файл в vi
выполнение в терминале (xterm
), если я непосредственно закрываю терминал без первого закрытия файла затем, я вижу vi
все еще выполнение в фоновом режиме (ps x
). Теперь есть ли любой способ присоединить тот процесс т.е. vi к некоторому другому терминалу так, чтобы я мог продолжить свою работу над файлом. Я также попробовал fd
команда, но это перестало работать.
Это не возможно “чисто”. Существуют инструменты, такие как экран и tmux, которые создают остаточный виртуальный терминал: можно запустить программу в экране, отсоединить экранную сессию и более позднее повторное прикрепление экранная сессия на другом терминале. Но это требует планирования заранее.
Возможно использовать ptrace для игры с дескрипторами файлов процесса для повторного подключения их к другому терминалу. Это не работает надежно, потому что это могло бы создать несоответствия в структурах данных процесса: некоторые программы не будут возражать, другие откажут. Можно сделать это путем присоединения программы в отладчике и выпустить правильную последовательность системных вызовов (по крайней мере, open
, dup
и close
для каждого стандартного входа, стандартного вывода и стандартной погрешности). Существует несколько существующих инструментов, которые могут сделать это, например, neercs и крысиный.
См. также, Как я могу приостановить рабочий процесс по ssh, отрицать его, связать его к новой экранной оболочке и не приостановить его?, Сценарий Представления По SSH?, Могу я nohup/screen уже запущенный процесс?, команда Resume, работающая на отброшенной сессии SSH.