Perché ci sono solo due segnali definiti dall'utente?


11

Nell'elenco dei segnali definiti in un sistema Linux, ci sono due segnali dichiarati come segnali definiti dall'utente ( SIGUSR1e SIGUSR2). Altri segnali verranno generati o catturati in situazioni specifiche, ma i SIGUSR vengono lasciati per l'uso dell'applicazione utente.

Quindi perché solo due segnali?

Risposte:


13

Storicamente, Unix avuto solo questi due segnali, ma i sistemi moderni hanno i segnali in tempo reale SIGRTMIN... SIGRTMAX.

A causa della semantica stravagante e non portabile delle API dei segnali, non vi è quasi alcun caso d'uso in cui i segnali sarebbero preferibili rispetto ad altri meccanismi di comunicazione come le pipe. Pertanto, l'allocazione di un nuovo numero di segnale non è mai stata considerata necessaria.


Grazie. Nel mio caso gestisco SIGUSR1 per la riconfigurazione. Significa che quando l'amministratore vuole cambiare la configurazione del mio processo in esecuzione, cambia il file di configurazione e invia un SIGUSR1 al mio PID (qui è più facile usare una pipe). E io uso SIGUSR2 per l'arresto del processo pulito. Non era necessario per me utilizzare un segnale diverso da questi due, ma alcune funzionalità di runtime potevano essere implementate gestendo altri segnali definiti dall'utente!
Saeedn,

2
@saeedn Perché non usi SIGTERM per l'arresto del processo pulito? Ecco a cosa serve. Molti altri server usano SIGHUP (che è altrimenti significativo solo in un processo interattivo) come segnale per ricaricare i file di configurazione, quindi potresti considerarlo.
Casuale 832,

@ Random832 Hai ragione, so cosa dici. Ma il problema a cui stavo pensando era che cosa sarebbe successo se avessi esaurito le mie 31 scelte di segnali?
Saeedn,

1
Dove posso ottenere maggiori informazioni sui segnali SIGRTMIN ... SIGRTMAX? Dove sono definiti quando vengono utilizzati?
Strubbl

6

I segnali forniscono solo un mezzo di comunicazione primitivo. In particolare, non è possibile allegare alcuna informazione. Il destinatario conosce solo il numero del segnale, non l'identità del mittente. È possibile unire più segnali in uno solo. Date tutte queste restrizioni, non ci sono molti scopi utili per i segnali.

Per scopi più complessi, utilizzare mezzi di interazione più complessi, come tubi o prese.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.