LINUX.ORG.RU

Я, сто лет назад, делал через bind клавиш в screen.

Сейчас вроде есть такое и в баше.

ziemin ★★ ()

help bind

    Set Readline key bindings and variables.
    
    Bind a key sequence to a Readline function or a macro, or set a
    Readline variable.  The non-option argument syntax is equivalent to
    that found in ~/.inputrc, but must be passed as a single argument:
    e.g., bind '"\C-x\C-r": re-read-init-file'.
    

cx ★★ ()
Ответ на: комментарий от cx

Что-то не наблюдаю там возможности задать сигнал на хоткей..

Так же, в man stty тоже не видно.

takino ★★★★ ()
Ответ на: комментарий от takino

Я возможно неправильно понял, но:

bind -x '"\C-t":" kill -s USR1 $$"'
нэ? Или кому ты там сигнал посылать собрался.

cx ★★ ()
Последнее исправление: cx (всего исправлений: 1)
Ответ на: комментарий от takino

УМВР, по Ctrl-t баш получает URS1. Что-то делаешь не так? Версия баша протухшая?

cx ★★ ()
Ответ на: комментарий от cx

Дык. Баш то башем, я, наверное, неверно объяснил: надо послать сигнал текущему процессу, а не башу. Как C-c шлет sigkill.

takino ★★★★ ()
Ответ на: комментарий от takino

а. баш тут ни при чем. никак по-простому это не сделать.

val-amart ★★★★★ ()
Ответ на: комментарий от val-amart

Печаль. Люто раздражает необходимость слать usr вручную, когда статус хочется увидеть.
Опять, обожемой как же я люблю бздю, особенно там, куда поставить ее ну совсем нельзя. :|

takino ★★★★ ()
Ответ на: комментарий от takino

окей, а софт может реагировать только на sigusr и поменять это ты не можешь? если так, то самый простой выход — написать обертку для ld_preload которая будет регистрировать хэндлер на sigquit (который можно послать с клавиатуры) и будет в ответ слать сама себе sigusr1. второй вариант — добавить обработку sigusr1 в драйвер псевдотерминала в ядре. возможно, это можно сделать через модуль, никогда такого не делал.

val-amart ★★★★★ ()
Ответ на: комментарий от val-amart

Во фре - изкоробки ctrl-t шлет USR1
В опене -
stty kerninfo status ^T (по крайней мере на хосте где это было давным давно настроено есть такая запись в ~/.profile)

takino ★★★★ ()
Ответ на: комментарий от val-amart

написать обертку для ld_preload которая будет регистрировать хэндлер на sigquit (который можно послать с клавиатуры) и будет в ответ слать сама себе sigusr1

Это, кстати, клевый вариант.
Спасибо!

takino ★★★★ ()
Ответ на: комментарий от takino

надо послать сигнал текущему процессу, а не башу.

что такое «текущий процесс»?

emulek ()
Ответ на: комментарий от emulek

очевидно, foreground process group leader и сессии лидером которой является shell и которая привязана к терминалу.

val-amart ★★★★★ ()
Ответ на: комментарий от val-amart

И в фре, и в опенке, и в нетке есть SIGINFO, который в данном случае и шлется (c-t или сконфигуренный kerninfo status).
Увы и ах, в линуксе его нет.

takino ★★★★ ()
Ответ на: комментарий от takino
#!/bin/sh

  # bash, dash, mksh, zsh+szsh+kzsh ; не работает в ksh

  trap 'kill -USR1 ${PID}' QUIT ; trap 'kill -INT ${PID}' INT
  set -m ; dd "${@}" & PID=${!} RC=131
  while [ ${RC} -eq 131 ] ; do wait ${PID} ; RC=${?} ; done
  wait ${PID} 2>/dev/null

exit ${RC}


Ctrl-\ при стандартном stty.

ABW ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.