Esta función para Gnu con linux la podemos usar para pedir al usuario que introduzca una contraseña, y que quede un poco más profesional que con un scanf a secas. Cual es la diferencia, pues (aparte de otras) que esta función desactivará el "echo" en la terminal. Para los que no sepan lo que hace el "echo", nos muestra los caracteres que vamos escribiendo, si queréis podéis probar a ejecutar `stty -echo' en vuestra terminal, exacto a que ahora no veis nada de lo que ponéis :p (pon `stty echo' para volver a activarlo).
Ahora que recuerdo, la primera vez que oí hablar sobre el "echo" fue haciendo una practica de las revistas de hackxrack, donde te pedían habilitarlo en el telnet, buenos recuerdos :).
Ok, resumiendo, el usuario no verá lo que escribe, como pasa cuando intentamos introducir una contraseña en cualquier otro sitio. La sintaxis es esta:
#include <unistd.h> char *getpass( const char *prompt);
Vemos que la función nos retornará un puntero apuntando a la dirección de memoria donde se alojará la string que introduzca el usuario. Como parámetro le podemos meter una cadena de texto, que será lo que imprima antes de pedir la contraseña. Vamos con el ejemplo:
char *pass; // Declaramos el puntero.
pass = getpass("Contraseña: "); // Asignamos al puntero declarado la salida de la función.
// Metemos como parámetro una string.
fprintf(stdout,"Tu contraseña es: %s\n",pass); // Imprimimos la contraseña que ha
// introducido el usuario.
Otra forma:
char *pass; char *text = "Contraseña: "; // Declaramos además otro puntero con la string. pass = getpass(text); // En este caso especificamos como parámetro el puntero. fprintf(stdout,"Tu contraseña es: %s\n",pass);
A partir de este post y en los sucesivos, voy a añadir una captura de como es la salida real del programa, para que sea un poco más visual.
Ver `man getpass' para mas info.

















