Сохранив файлы на потерянном фокусе в Vim

Пользователям только разрешают уничтожить или иначе сигнализировать об их собственных процессах.

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

Если процесс должен работать как корень, необходимо будет позволить, чтобы агент поднял свои полномочия уничтожить процесс. Это может принять форму корневого исполняемого файла помощника setuid или запись в sudoers файл (с NOPASSWD тег). sudo запись имеет преимущество, что его использование будет зарегистрировано.

Обратите внимание, что нет никакого атомарного способа отправить сигнал в процесс. Отправка сигнала является асинхронной: возможно, что Вы получаете PID процесса, затем Вы отправляете сигнал в тот процесс, но процесс умер тем временем, и его идентификатор процесса был уже снова использован другим процессом.

Существует способ избежать этого вовлечения родителя процесса, который Вы хотите уничтожить, но это сложно. Идентификатор процесса не исчезнет, пока его родитель не подтверждает смерть ребенка (процесс-зомби остается до тех пор). Для использования этого эффективно Вам нужен родитель, чтобы знать, что он должен держаться ни до какого агента он собирающийся хотеть итог уничтожает ребенка.

Если Вы не обеспокоены состоянием состязания, можно дать агенту разрешение работать pkill name_of_process_to_kill, если Вы знаете, что будет единственный процесс с тем именем. Если можно определить процесс файлом, он имеет открытый, можно использовать fuser -k /path/to/file.

Если Вы можете, изменить процесс так, чтобы он слушал запрос завершения на канале или сокете. Настройте полномочия или аутентификацию на канале или сокете согласно Вашим потребностям.

1
19.03.2012, 06:23
2 ответа

От :h FocusLost:

FocusLost                       When Vim lost input focus.  Only for the GUI
                                version and a few console versions where this
                                can be detected.  May also happen when a
                                dialog pops up.

*отклоните (включая OS X), терминалы не делают свое состояние фокуса известным никаким приложениям выполненный в них так, это не будет работать там, и действительно нет никакого способа заставить его работать.

3
27.01.2020, 23:29
  • 1
    D'oh! Спасибо Ignacio. Я предполагаю, что Доморощенная версия энергии, которую я использую, подпадает под категорию, которую Вы заключили в кавычки: "немного консольных версий, где это обнаруживается". –  Diego Barros 19.03.2012, 06:24

Если Ваша цель состоит в том, чтобы предотвратить проигрывающий код, возможно, файлы резервных копий могли бы помочь Вам.

set backup                    " keep a backup after overwriting a file
set backupdir^=/tmp//         " list of directories to put backup files in

У меня есть он в моем .muttrc, это хранит файлы резервных копий до перезапуска Mac в /tmp/

0
27.01.2020, 23:29

Теги

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