Tengo un tty (digamos/dev/tty5) y quiero saber si actualmente es un tty controlador de un grupo o sesión de proceso, o si es actualmente sin dueño. POSIX tiene dos funciones de API que se sugieren a sí mismas aquí: tcgetpgrp() y tcgetsid(), las cuales solo funcionan si la persona que llama tiene el tty como control tty, lo que en este caso las hace casi inútiles (y de hecho, yo no t ver el punto de tcgetsid() en absoluto).Cómo saber si un TTY de Linux está controlando un grupo de proceso
Alguien tiene una sugerencia de cómo puedo detectar de una manera sensata, desde C, si un terminal es actualmente un terminal de control de un proceso. Solo me importa Linux, así que si las API específicas de Linux son necesarias, eso está bien conmigo.
En mi pregunta original ya he intentado explicar por qué tcgetpgrp() es sobre todo inútil. La razón por la que quiero esto es simplemente para averiguar si un getty o algo así ya está activo en un terminal. No me interesan otros procesos que tengan el TTY abierto para escritura (que puede suceder para el registro, yadda yadda), quiero saber si hay alguien que realmente lo lea/controle. Y pasando por/proc a la lsof no es lo que llamo "sano" ... – user175104
Todo lo que hay. A menos que acceda a los datos del modo kernel, o que sea root, no podrá hacer lo que describe con las llamadas en modo usuario. No en Linux. La razón: seguridad. Y lo siento si ofende tu definición de cuerdo. Tómalo con Ulrich Drepper. –