Como iniciar um trabalho no estado parado?

2

Em bash , como posso iniciar um trabalho em um estado parado, como se eu tivesse começado normalmente e pressionado imediatamente Ctrl-Z?

Ou como se eu tivesse enviado SIGSTOP para o processo imediatamente, mas sem dar ao processo a chance de executar antes de receber o SIGSTOP.

    
por nibot 07.10.2012 / 13:29

2 respostas

5

Você pode iniciar um novo subshell, imediatamente pará-lo e então (depois que o makint for executado novamente) executar o seu comando. Eu usei a variável $ BASHPID para obter o PID do subshell, pois $$ ainda retorna o PID do pai:

( kill -SIGSTOP $BASHPID; exec my_command )

Usar exec aqui fará com que o processo my_command use o mesmo PID da subshell.

    
por 07.10.2012 / 14:03
4

Eu sei que esta pergunta é bastante antiga, mas apenas no caso de alguém estar procurando por essa funcionalidade, como eu estava:

Recentemente adicionei isso à minha coleção de módulos LD_PRELOAD ( link ). Usando o preeny, você pode ter um processo suspenso na inicialização:

# https://github.com/zardus/preeny
# cd preeny
# make
# LD_PRELOAD=x86_64-linux-gnu/startstop.so /bin/echo TEST
[1]+  Stopped    LD_PRELOAD=x86_64-linux-gnu/startstop.so /bin/echo TEST
# fg
TEST

Preeny suspende o processo durante a inicialização da biblioteca, antes de main() ser chamado.

    
por 10.05.2015 / 23:24