Quindi ho un tty (diciamo/dev/tty5) e voglio sapere se attualmente è un tty di controllo di un gruppo di processi o di una sessione, o se è attualmente sconosciuto. POSIX ha due funzioni API che si suggeriscono qui: tcgetpgrp() e tcgetsid(), entrambi funzionano solo se il chiamante ha il tty come controllo tty - che in questo caso li rende per lo più inutili (e infatti io non lo faccio t vedere il punto di tcgetsid() affatto).Come capire se un TTY Linux sta controllando un gruppo di processi
Qualcuno ha un suggerimento su come posso rilevare in modo sano, da C, se un terminale è attualmente un terminale di controllo di un processo? Mi interessa solo Linux, quindi se sono necessarie API specifiche per Linux, per me va bene.
Nella mia domanda iniziale ho già cercato di spiegare il motivo per cui tcgetpgrp() è in gran parte inutile. La ragione per cui voglio questo è semplicemente capire se un getty è già attivo su un terminale. Non mi importa di altri processi con TTY aperto per la scrittura (che può accadere per la registrazione, yadda yadda), voglio sapere se c'è qualcuno che sta leggendo/controllandolo. E passare attraverso/proc a lsof non è quello che io chiamo "sano" ... – user175104
Questo tutto quello che c'è. Se non si accede ai dati in modalità kernel o se si è root, non è possibile eseguire le operazioni descritte con le chiamate in modalità utente. Non in Linux. Il motivo: sicurezza. E mi dispiace se offende la tua definizione di sano. Prendilo con Ulrich Drepper. –