Is job-control inside a script only for sub-shells/child-processes or can I use it to control the job I started?
Sim. É o shell pai que faz o controle de trabalho, você não pode colocar o processo filho em primeiro plano de dentro de si mesmo.
Editar: No entanto, você ainda pode fazer assim:
-
script filho:
#! /bin/sh ... trap "kill -s USR1 $PPID" TTOU ... echo -n Cleanup? read yn </dev/tty ...
-
script pai:
#! /bin/sh ... trap "fg %1" USR1 ... child & ... wait ...
Isso instala um manipulador de sinal para SIGTTOU
no filho e outro
manipulador de sinal para SIGUSR1
no pai. Quando o filho tenta enviar algo para o terminal, ele recebe um SIGTTOU
. Em seguida, ele envia um SIGUSR1
para o pai, que por sua vez executa fg %1
e coloca o filho em primeiro plano.
O acima assume %1
para ser o processo filho. Na prática, você provavelmente tem um único processo em segundo plano.