Normalmente, existem duas coisas que você precisa fazer para obter esse efeito:
-
Reparar o processo para um novo shell.
Basicamente, não há como fazer isso até onde eu sei. No UNIX, há apenas uma maneira de reparar um processo que eu conheço, e isso acontece apenas quando o pai original morre sem esperar por ele. Nesse caso, o processo (um órfão) é reparado em
init
, ID do processo 1. Mas isso não o ajuda aqui, porque você não quer matar o pai original nem deseja que o novo pai se torneinit
.Qualquer pessoa (com permissão) ainda pode enviar sinais para processos como
SIGTSTP
eSIGCONT
eSIGINT
, para que você possa usar o comandokill
para enviar esses sinais para o processo (ou grupo de processos) para simule efeitos como suspender, continuar e interromper o trabalho, mas o novo shell não estará ciente disso e não receberá notificações sobre o status do grupo de processos e, portanto, não poderá rastreá-lo com o recurso de controle de trabalho. -
Redirecionar stdio. Porque o processo 'stdio é provavelmente anexado ao terminal onde o processo foi iniciado e você provavelmente quer que ele vá para o terminal onde o novo shell está rodando. A menos que você tenha redirecionado a saída para um arquivo ou outro local originalmente.