Post con tag signal
Qt e C++: signal e slot
3 mar
Gli oggetti Qt comunicano tra loro mediante un flessibile meccanismo composto da signal e slot.
Un signal è un metodo che viene emesso, mediante la parola chiave emit, quando si ritiene opportuno. Essi non vengono implementati ma solo dichiarati e vanno inseriti, all’interno della classe, nella sezione signals.
Uno slot è invece un metodo che può essere invocato come risultato di un segnale emesso. Gli slot vanno inseriti nelle sezioni public slots, protected slots o private slots. Il modificatore di accesso viene applicato solo quando la funzione è utilizzata come metodo.
I segnali in Python
16 feb
Il modulo signal fornisce uno strumento per la gestione dei segnali.
Il seguente esempio mostra una semplice gestione dei segnali CTRL + C (interruzione da tastiera), CTRL + Z (stop da tastiera) e il segnale SIGALRM.
Il programma imposterà per questi segnali una funzione che li gestisce e si metterà in sleep per 10 secondi. Se non accade nulla dopo 5 secondi, si attiverà il segnale di alarm. Altrimenti vengono stampati gli altri due segnali, se questi sono stati inviati al programma:
import signal import time def code_to_string(code): if code == 2: return "SIGINT" elif code == 14: return "SIGALRM" elif code == 20: return "SIGTSTP" else: return str(code) def sig_handler(signum, frame): code = code_to_string(signum) print "Segnale %s" % code signal.signal(signal.SIGALRM, sig_handler) signal.signal(signal.SIGINT, sig_handler) signal.signal(signal.SIGTSTP, sig_handler) signal.alarm(5) time.sleep(10)
Invio di un segnale ad un processo in C su Linux
8 gen
Il seguente esempio ha lo scopo di mostrare l’utilizzo della funzione kill che permette di inviare un signal ad un processo. I segnali intercettati saranno SIGUSR1 e SIGUSR2, segnali indicanti condizioni definite dall’utente.
Nella sua semplicità, l’esempio utilizza il tempo come sincronizzazione e il busy waiting, il che lo rende inefficente e instabile.
Un’implementazione migliore dovrebbe quantomeno mostrare la presenza di un semaforo.
Continua >