Уничтожение оболочки с помощью терминала

echo $$ 

Это говорит PID оболочки. Так, если я уничтожаю это использование оболочки

kill 123 #suppose 123 is PID of shell

Ничего не происходит на самом деле, я попробовал его. Я снова работал

echo $$

и оболочка работала под тем же PID. Почему оболочка не останавливается? Что может произойти, если оболочка уничтожается?

2
задан 8 March 2017 в 21:43

1 ответ

Главная причина состоит в том, потому что оболочки создаются для захвата эти TERM сигнал. Это поведение документируется. Заключить удару в кавычки 4,3 руководства:

СИГНАЛЫ

, Когда удар является интерактивным, в отсутствие любых прерываний, он игнорирует SIGTERM (так, чтобы уничтожили 0, не уничтожает интерактивную оболочку), и SIGINT пойман и обработан (так, чтобы встроенное ожидание было прерываемо). Во всех случаях удар игнорирует SIGQUIT. Если управление заданиями в действительности, удар игнорирует SIGTTIN, SIGTTOU и SIGTSTP.

От man kill:

сигнал по умолчанию для уничтожения является ТЕРМИНОМ.

Теперь, если бы необходимо было указать kill -KILL $, что действительно уничтожило бы оболочку, и после того как оболочка управления выходит - который закрыл бы терминал. Опции -9, -KILL и -SIGKILL являются всеми псевдонимами для того же kill сигнал, который является, почему любой из этих 3, работа, и является одним из псевдонимов, на которые Siguza указал в комментариях.

Контрастирование, к какой M. Becerra заявил, это не имеет никакого отношения к самому окну, поскольку окно PID всегда отличается от оболочки:

# Shell PID
$ cat /proc/self/status  | grep '^Pid:'                                                                                  
Pid:    7058
$ echo $                                                                                                                
14709
# GUI window PID
$ xdotool getactivewindow getwindowpid 
2774
3
ответ дан 2 December 2019 в 02:47

Другие вопросы по тегам:

Похожие вопросы: