2012-03-30 27 views
6

Mam aplikację (C, Linux), która obsługuje szyfrowanie Ctrl-C SIGINT przez zamknięcie. Chciałbym dodać kolejną procedurę obsługi sygnału, aby móc użyć innego kombinatora klawiszy do "ponownego załadowania konfiguracji podczas pracy".Jaki sygnał z klawiatury poza Ctrl-C mogę złapać?

Patrzę więc na sygnał, który mogę wysłać do procesu pierwszoplanowego przez naciśnięcie klawisza, co nie zmusza procesu do zakończenia lub zawieszenia. Czy są jeszcze jakieś inne?

+0

Bardzo podobne: http://stackoverflow.com/q/6764265/371250 – ninjalj

Odpowiedz

8

Można użyć ctrl+Z,

SIGTSTP 

Wartość = 20

Więcej szczegółów patrz ten link.

+0

To działa, dziękuję. Nigdy nie słyszałem o SIGTSTP. – blueshift

+0

Nice. Mile widziane. –

2

Twój program może użyć SIGUSR1 and SIGUSR2, aby zrobić cokolwiek zechce, ale nie ma jednoznacznego sposobu wysyłania ich tak, jak Ctrl + C wysyła sygnał SIGINT. Musisz użyć czegoś takiego, jak kill(1), aby wysłać sygnał, np. kill -USR1 <mypid>.

+1

Prawidłowo, więc to nie jest to, czego chcę. – blueshift

+1

@blueshift Należy jednak pamiętać, że są to sygnały, z którymi się zmagasz. Zmieniając inne, tworzysz nieoczekiwane zachowanie. To nie musi być złe, chyba że rozpowszechniasz program. –

+0

Sprawiedliwy punkt. Ale to tylko system wbudowany, a nie problem. – blueshift

3

Można spróbować Ctrl - \ który SIGQUIT jeśli koniecznie musisz go mieć naciśnięcie klawisza (ty może go złapać).

+0

Działa, podobnie jak SIGTSTP. – blueshift

Powiązane problemy