Provided by:
manpages-es_1.55-10_all 
NOMBRE
ttyslot - encuentra la posicion de la terminal de usuario actual en
algun archivo
SINOPSIS
#include <unistd.h> /* en sistemas tipo BSD */
#include <stdlib.h> /* en sistemas tipo SYSV */
int ttyslot(void);
DESCRIPCI'oN
La funcion legacy ttyslot() devuelve el indice de la entrada de usuario
actual en algun fichero.
Entonces "cEn que fichero?" te preguntaras. Bueno, veamos algo de
historia.
Historia Antigua
Solia haber un archivo /etc/ttys en Unix V6, que era leido por el
programa init(8) para descubrir que hacer con cada linea terminal.
Cada linea consistia en tres caracteres. El primer caracter podia ser
'0' o '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 linea a probar ('-' era: comienza a probar 110 baudios). De modo que
la tipica linea era "18-". Un cuelgue en alguna linea se resolvia
cambiando el '1' a '0', senalando a init, cambiando otra vez, y
volviendo a senalar a init de nuevo.
En Unix V7 el formato se cambio: aqui el segundo caracter era un
argumento a getty(8) que indicaba la secuencia de velocidades de linea
a probar ('0' era: cicla sobre 300-1200-150-110 baudios; '4' se
destinaba a la consola en linea DECwriter) mientras que el resto de la
linea contenia el nombre del tty. De modo que una linea tipica era
"14console".
Sistemas mas modernos tienen sintaxis mas elaborada. Los sistemas tipo
SYSV tienen /etc/inittab en su lugar.
Historia Antigua (2)
Por otro lado, esta el archivo /etc/utmp que listaba las personas que
estaban conectadas en ese momento. Es mantenido por login(8). Tiene un
tamano fijo, y el indice apropiado en el archivo estaba determinado por
login(8) usando la llamada ttyslot() para hallar el numero de la linea
en /etc/ttys (contando desde 1).
La sem'antica de ttyslot
Entonces, la funcion ttyslot() devuelve el indice de la terminal
controladora del proceso actual en el archivo /etc/ttys, y eso es
(normalmente) lo mismo que el indice de la entrada del usuario actual
en el archivo /etc/utmp. BSD aun tiene el archivo /etc/ttys , pero los
sistemas tipo SYSV no, y por tanto no pueden referenciarlo. De modo
que, en semejantes sistemas la documentacion dice que ttyslot()
devuelve el indice del usuario actual en la base de datos de
contabilidad de usuario.
VALOR DEVUELTO
Si termina satisfactoriamente, esta funcion devuelve el numero de
ranura. En caso de error (p.e.: si ninguno de los descriptores de
archivo 0, 1 o 2 esta 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 implementacion de glibc2 de esta funcion 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 devolvera
0.
Minix tambien tiene fttyslot(fd).
HISTORIA
ttyslot() aparecio en UNIX V7.
CONFORME A
XPG2. Legacy en SUSv2. Borrado en SUSv3. SUSv2 requiere -1 en caso de
error.
V'EASE TAMBI'EN
getttyent(3), ttyname(3), utmp(5)