Você poderia explicar as seguintes declarações sobre como os comandos nonbuiltin iniciados pelo Bash manipulam os sinais?

0

Do manual do bash

Non-builtin commands started by Bash have signal handlers set to the values inherited by the shell from its parent.

When job control is not in eff ect, asynchronous commands ignore SIGINT and SIGQUIT in addition to these inherited handlers.

Commands run as a result of command substitution ignore the keyboard-generated job control signals SIGTTIN, SIGTTOU, and SIGTSTP.

Eu queria saber se alguém poderia dar alguns exemplos para mostrar o que isso significa? Obrigado.

Relacionadas Ao digitar ctrl-c em um terminal, por que o trabalho em primeiro plano não é terminado até que seja concluído?

    
por Tim 27.05.2018 / 23:05

1 resposta

1

stty tostop
echo bar >&2 & # no output from echo, just from shell job control
fg # now the output is produced
    bar
text=$(echo foo; echo bar >&2) # command substitution in foreground command
    bar
text=$(echo /etc/passwd; echo bar >&2) ; ls -l "$text" &
    bar
fg
    -rw-r--r-- 1 root root 2745 18. Feb 00:36 /etc/passwd

A saída "normal" do comando background está atrasada devido a SIGTTOU , mas a saída da substituição do comando em background para stderr é visível imediatamente.

comandos externos

trap '' HUP
bash
sleep 1234 # PID 23456

em uma casca diferente

kill -HUP 23456 # does not abort sleep
    
por 27.05.2018 / 23:22

Tags