Как и во многих предыдущих вопросах, я обнаружил, что выполняю задание, которое мне хотелось бы запускать на экране. Я был вынужден отказаться от процесса, потому что мне нужно было отключиться. Теперь, когда я снова подключился, я вижу, что процесс все еще выполняется. Как я могу «вернуть» процесс, чтобы я мог видеть его результат и вводить его?
Этот вопрос отличается от простого перемещения запущенного процесса на экран тем, что он включает повторное открытие потерянных дескрипторов stdin / out / err.
Отказываясь от процесса, вы фактически заявляете, что хотите, чтобы он игнорировал SIGHUP, выдаваемые терминалом. Как только вы закроете сеанс (скажем, bash), этот процесс станет владельцем init. Поэтому, когда вы говорите, что хотите повторно владеть процессом после того, как отказались от владения, вы говорите, что хотите забрать владение у другого процесса, что не реализовано и по уважительной причине. Это просто невозможно сделать изящно в Linux.
Это повторяющийся вопрос - см. Перенос уже запущенного процесса на экран , что указывает на Retty, который представляет собой самоописанный ужасный взлом, реализующий то, что я всегда предполагал, возможно, но никогда не пробовал: он находит fd 0, 1 и 2 (стандартные вход, выход и ошибка, соответственно) для процесса и присоединяется к их, как ужасного аберрантного паразита, которого не должно быть.