Existe uma maneira de suspender um processo pertence ao shell A e foreground dele no shell B?

2

Eu sabia como suspender um processo e trazê-lo para primeiro plano no shell atual, mas eu não tenho idéia sobre isso se eu tiver executado um processo no shell A e agora eu quero trazê-lo em primeiro plano no shell atual B. < br> Sem usar ferramentas terceiras como screen , existe uma maneira de realizar essa tarefa?
Na minha opinião, acho que deve ser suspenso e retomá-lo em primeiro plano, no entanto, não sei como fazer.

    
por xohozu 23.03.2015 / 02:43

1 resposta

2

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 torne init .

    Qualquer pessoa (com permissão) ainda pode enviar sinais para processos como SIGTSTP e SIGCONT e SIGINT , para que você possa usar o comando kill 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.

    Existem algumas maneiras de fazer isso.

por 23.03.2015 / 04:18