4

Я использую FC 14, но это, вероятно, довольно общий вопрос для Linux.

Я хочу иметь возможность связать ключ в драйвере терминала Linux, который вызовет сигнал, отличный от SIGINT или SIGQUIT , для запущенного приложения. Я не хочу кооптировать ни одного из них. Если это звучит для вас звонком, подумайте в духе старой возможности CTRL/T , только с сигналом, перехваченным и обработанным приложением, а не ОС.

Так как это для отчетов о состоянии для длительных операций, SIGUSR1 кажется подходящим. Однако, если не поднять это с клавиатуры терминала, я возьму то, что смогу получить. Я не хочу пытаться сделать невозможное и поймать SIGKILL B-), но я хотел бы иметь возможность подавать сигналы, отличные от SIGQUIT и SIGINT с клавиатуры терминала.

Сценарий:

  1. Настройте терминал для выполнения функции повышения сигнала
  2. Запустить приложение из оболочки в окне терминала
  3. Подождите, пока он не попадет в сложную длительную секцию
  4. Нажмите CTRL/whatzit чтобы поднять сигнал
  5. Приложение ловит сигнал, делает какой-то отчет о состоянии и возобновляет

Я мог бы сделать это без проблем на VMS/OpenVMS, и мои тыквы как бы заморозили мысль, что на Linux это сложнее.

1 ответ1

2

К сожалению, интерфейс для выдачи сигналов с помощью магических символов не является общей вещью привязки символа к сигналу - есть определенные конкретные сигналы, которые могут быть подняты следующим образом, и вы можете выбрать символ, но не сигнал: см. соответствующая глава спецификации POSIX.

(Помимо SIGINT и SIGQUIT , другой вариант для кооптирования сигнала - SIGTSTP , если вы можете жить без возможности остановить ваш процесс с помощью ^Z - что, я полагаю, может иметь место, если вы ожидаете оставить его запущенным в любом случае на переднем плане.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .