Что лучше / предпочтительнее убить все дочерние процессы, используя PPID или PGID?

Я не думаю, что X-сервер сообщает о своем имени хоста клиентам. Клиенты, как предполагается, знают имя хоста, с которым они соединяются, но по соединению SSH, это localhost, с ssh выполнение передачи.

Сервер OpenSSH устанавливает SSH_CLIENT переменная среды; можно считать IP-адрес клиента оттуда. Это - адрес, как замечено сервером, таким образом, Вы не можете отличить машины позади того же NAT. Это - адрес X-сервера, при условии, что ничто иное не продолжается (передача SSH, удаленный X-сервер на клиенте, …). Обратите внимание, что Вы только получите переменную среды в Emacs, если это было запущено из того соединения SSH, не при создании кадра в рабочем Emacs с emacsclient.

Можно достигнуть некоторые свойства дисплея (размеры, глубина цвета, X поставщиков, …) в Emacs с функциями x-server-XXX, x-display-XXX и display-XXX.

3
07.08.2015, 16:26
1 ответ

Возможно, ваш профиль называется как netctl-if [something] @ enp4s0.service. Поэтому попробуйте запустить:

$ netctl disable netctl-if[something]@enp4s0.service
-121--243672-

В настоящее время невозможно разрешить QEMU выбрать следующий свободный порт для SPICE. Это происходит из-за подробной реализации: QEMU использует spice _ server _ set _ port , который принимает только один числовой параметр.

Лучшее, что вы можете сделать сейчас, это выбрать номер порта за пределами QEMU и назначить его, как сейчас.

Если это слишком неуклюже, попробуйте использовать DNS для привязки к первому доступному свободному IP-адресу + порту. Код сервера SPICE пробует каждый адрес до тех пор, пока он не будет успешно выполнен, поэтому если сопоставить local.test с 127,0,0,1, 127,0,0,2, 127,0,0,3 и т.д., то он попытается выполнить привязку к каждому из этих интерфейсов до тех пор, пока один из них не завершится успешно. Звучит ужасно, но это может быть полезно. Обратите внимание, что этот метод возможен только в том случае, если на том же порте по адресу подстановочного символа нет другой службы, выполняющей прослушивание.

-121--185549-

Уничтожение родительского процесса не приведет к уничтожению дочерних процессов, если только родительский процесс не перехватит и не повторно не отправит сигнал.

Уничтожение группы процессов с помощью TERM посылает сигнал TERM всем членам группы процессов, так что это путь, но вы должны убедиться, что родитель запускает группу процессов (или что родительский объект запускает группу процессов, и вы не заботитесь о том, чтобы родительский объект мог получить сигнал TERM, если он еще жив).

Если вы используете оболочку для запуска родительского элемента (или родительского элемента), то вам не нужно беспокоиться об этом, потому что каждый вызов команды в оболочке запускает группу процессов.

(Существует специфичная для Linux функция, которая может быть использована для указания ядру отправлять дочерним обработчикам сигнал, когда их родитель умирает, но в стандартном Unix это не происходит, насколько я знаю. Ознакомьтесь с prctl (2) и найдите DEATHSIG, если вы хотите узнать об этом больше).

6
27.01.2020, 21:14

Теги

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