-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[13] Come faccio ad intercettare caratteri/segnali di controllo?

Non si può "intercettare" un carattere di controllo. Quello che avviene è che il carattere genera un segnale che viene inviato al gruppo di processi del terminale in foreground, che potete intercettare nel vostro processo. I segnali sono documentati nella sezione perlipc/"Signals" ["Segnali", NdT] o nella sezione "Signals" del Camel.

Potete impostare i valori dell'hash %SIG in modo che siano le funzioni che volete che si occupano del segnale. Dopo che il perl ha catturato il segnale, cerca in %SIG una chiave con lo stesso nome del segnale, poi chiama il valore della subroutine per quella chiave.

	# come una subroutine anonima
	
	$SIG{INT} = sub { syswrite(STDERR, "ahi\n", 5 ) };
	
	# oppure un riferimento ad una funzione
	
	$SIG{INT} = \&ahi;
	
	# oppure il nome della funzione come una stringa
	
	$SIG{INT} = "ahi";

Le versioni di Perl precedenti alla 5.8 avevano nel proprio sorgente C dei gestori di segnali che intercettavano il segnale ed, eventualmente, eseguivano una funzione Perl da voi messa in %SIG. Questo víola le regole della gestione dei segnali a quel livello causando un core dump del perl. A partire dalla versione 5.8.0, il perl cerca in %SIG *dopo* che il segnale è stato catturato, piuttosto che nel mentre il segnale venga catturato. Le precendeti versioni di questa domanda erano non corrette.

vedi in inglese

AUTORE E COPYRIGHT

Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan Torkington. Tutti i diritti riservati.

Questa documentazione è libera; puoi ridistribuirla e/o modificarla secondo gli stessi termini applicati al Perl.

Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di codice in questo file sono rilasciati al pubblico dominio. Potete, e siete incoraggiati a farlo, utilizzare il presente codice o qualunque forma derivata da esso nei vostri programmi per divertimento o per profitto. Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese ma non è obbligatorio.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google