Provided by:
manpages-es_1.55-8_all 
NOMBRE
ttyslot - encuentra la posición de la terminal de usuario actual en
algún archivo
SINOPSIS
#include <unistd.h> /* en sistemas tipo BSD */
#include <stdlib.h> /* en sistemas tipo SYSV */
int ttyslot(void);
DESCRIPCIóN
La función legacy ttyslot() devuelve el índice de la entrada de usuario
actual en algún fichero.
Entonces "¿En qué fichero?" te preguntarás. Bueno, veamos algo de
historia.
Historia Antigua
Solía haber un archivo /etc/ttys en Unix V6, que era leído por el
programa init(8) para descubrir qué hacer con cada línea terminal.
Cada línea consistía en tres caracteres. El primer caracter podía ser
’0’ ó ’1’, donde ’0’ significaba "ignorar". El segundo caracter
denotaba la terminal: ’8’ significaba "/dev/tty8". El tercer caracter
era un argumento para getty(8) que indicaba la secuencia de velocidades
de línea a probar (’-’ era: comienza a probar 110 baudios). De modo que
la típica línea era "18-". Un cuelgue en alguna línea se resolvía
cambiando el ’1’ a ’0’, señalando a init, cambiando otra vez, y
volviendo a señalar a init de nuevo.
En Unix V7 el formato se cambió: aquí el segundo caracter era un
argumento a getty(8) que indicaba la secuencia de velocidades de línea
a probar (’0’ era: cicla sobre 300-1200-150-110 baudios; ’4’ se
destinaba a la consola en línea DECwriter) mientras que el resto de la
línea contenía el nombre del tty. De modo que una línea típica era
"14console".
Sistemas más modernos tienen sintaxis más elaborada. Los sistemas tipo
SYSV tienen /etc/inittab en su lugar.
Historia Antigua (2)
Por otro lado, está el archivo /etc/utmp que listaba las personas que
estaban conectadas en ese momento. Es mantenido por login(8). Tiene un
tamaño fijo, y el índice apropiado en el archivo estaba determinado por
login(8) usando la llamada ttyslot() para hallar el número de la línea
en /etc/ttys (contando desde 1).
La semántica de ttyslot
Entonces, la funcion ttyslot() devuelve el índice de la terminal
controladora del proceso actual en el archivo /etc/ttys, y eso es
(normalmente) lo mismo que el índice de la entrada del usuario actual
en el archivo /etc/utmp. BSD aún tiene el archivo /etc/ttys , pero los
sistemas tipo SYSV no, y por tanto no pueden referenciarlo. De modo
que, en semejantes sistemas la documentación dice que ttyslot()
devuelve el índice del usuario actual en la base de datos de
contabilidad de usuario.
VALOR DEVUELTO
Si termina satisfactoriamente, esta función devuelve el número de
ranura. En caso de error (p.e.: si ninguno de los descriptores de
archivo 0, 1 ó 2 está asociado con una terminal que aparece en esta
base de datos) devuelve 0 en Unix V6 y V7 y sistemas tipo BSD, devuelve
-1 en sistemas tipo SYSV.
OBSERVACIONES
El archivo utmp se encuentra en diversos lugares en distintos sistemas,
por ejemplo: /etc/utmp, /var/adm/utmp, /var/run/utmp.
La implementación de glibc2 de esta función lee el archivo _PATH_TTYS,
definido en <ttyent.h> como "/etc/ttys". Devuelve 0 en caso de error.
Como los sistemas Linux no suelen tener "/etc/ttys", siempre devolverá
0.
Minix también tiene fttyslot(fd).
HISTORIA
ttyslot() apareció en UNIX V7.
CONFORME A
XPG2. Legacy en SUSv2. Borrado en SUSv3. SUSv2 requiere -1 en caso de
error.
VÉASE TAMBIÉN
getttyent(3), ttyname(3), utmp(5)