Прочитайте его документацию. Это - единственный путь. Как Keith уже записал, исходное значение SIGHUP состояло в том, что пользователь потерял доступ к программе, и таким образом, интерактивные программы должны умереть. Демоны — программы, которые не взаимодействуют непосредственно с пользователем — не имеют никакой потребности в этом поведении и вместо этого часто перезагружают их конфигурационные файлы, когда они получают SIGHUP. Но это просто конвенции.
Если у Вас есть источник, можно считать это, также. Или если у Вас только есть двоичный файл, можно попытаться демонтировать его, искать sigaction
вызовы, которые настраивают обработчик сигналов для SIGHUP
, и попытайтесь выяснить то, что делают те обработчики сигналов. Это будет более легкое расположение не отправить SIGHUP в ту программу во-первых.
В любом моменте времени данный процесс находится в одном из трех состояний относительно конкретного сигнала: игнорирование его, выполнение действия по умолчанию или выполнение пользовательского обработчика. Много нельдов позволяют Вам видеть маску сигнала процесса с ps
, например, с ps s
на Linux. Это может сказать Вам, если процесс игнорирует сигнал или умрет немедленно на SIGHUP, но если процесс установил обработчик, Вы не можете сказать то, что делает обработчик.
Чтобы сделать, что Вы хотите, нет действительно никакого способа обойти запись функции и отображение его Ваши предпочтительные ключи.
Начать :echo synIDattr(synID(line("."), col("."), 1), "name")
распечатает имя группы выделения для текущего слова под курсором.
Можно использовать ту информацию для определения который стиль комментария использовать.
Грубый пример для запущения Вас:
function! s:MyComment () range
for i in range(a:firstline, a:lastline)
exe "normal " . i . "gg"
normal ^
let stuff = synIDattr(synID(line("."), col("."), 1), "name")
if strpart(stuff, 0, 4) == "html"
normal I<!--
normal A -->
else
normal I//
endif
endfor
endfunction
vmap <silent> . :call <SID>MyComment()<CR>