GNU/Linux >> Linux Esercitazione >  >> Linux

Quando è utile setsid() o perché abbiamo bisogno di raggruppare i processi in Linux?

Una sessione è un insieme di processi che condivide un terminale di controllo. setsid è utile quando vuoi iniziare una nuova sessione, perché hai iniziato a connetterti a un nuovo terminale -- come quando avvii una shell all'interno di un emulatore di terminale -- o vuoi un demone (che non vuoi essere associato a un terminale di controllo).

La migliore spiegazione che conosco di questi aspetti è in R.W. Stevens Programmazione avanzata in ambiente Unix .


Why do we need to group processes? Considera la situazione in cui desideri chiudere in modo pulito e ciò include l'invio di un segnale ai tuoi figli. Esiste una race condition intrinseca:non è stato ricevuto un SIGCHLD, quindi sai che quel bambino è ancora vivo. Quindi mandi un segnale. Ma il figlio termina prima che il segnale venga inviato e un altro processo (non correlato) si avvia e ottiene lo stesso pid del figlio a cui è stato inviato il segnale. Il segnale va quindi al nuovo processo non correlato. Questo non va bene. Quindi, invece di inviare un segnale a pid specifici, segnali il gruppo di processo. Quando il figlio muore e inizia un nuovo processo con il pid originale, il nuovo processo non parte del gruppo di processi e il problema sopra descritto viene evitato.


Linux
  1. Perché il mio bisogno di controllo mi ha fatto passare a Linux

  2. 30 Esercizi sui processi Linux per amministratori di sistema

  3. Linux – Quando non dovrei uccidere -9 Un processo?

  4. UNIX / Linux:3 modi per inviare segnali ai processi

  5. Processi UNIX / Linux:funzione C fork()

Comando Ps in Linux (Elenca processi)

Come uccidere i processi Zombie in Linux

Monitoraggio dei processi su Linux

Comandi per la gestione dei processi in Linux

Come inviare processi in background su Linux

Cos'è un processo interrotto in Linux?