C/Visual C - Who en C

 
Vista:

Who en C

Publicado por Joan Manuel Ventura (5 intervenciones) el 17/12/2003 06:22:20
Hola a todos, estoy haciendo un mini-sistema, pero me he visto en una aprieto, mi sistema esta bajo Linux, GCC, y necesito saber el usuario logeado mediante alguna funcion, muchos amigos me han dicho que utilice el comando who y el resultado lo guarde en un archivo y entonces le haga un fread al archivo y obtenga el usuario, pero no lo quiero hacer asi porque no quiero utilizar archivo, necesito alguna funcion o algo que me asigne el valor directamente a un vector. sin la necesidad de un archivo.

bueno eso es todo, gracias a todos. En realidad apreciaria cualquier ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Who en C

Publicado por chuidiang (677 intervenciones) el 17/12/2003 10:13:15
Habitualmente suele haber una variable de entorno que tiene el nombre de usuario. Puedes recogerla en C por medio de la funcion

char *usuario = getenv ("USERNAME");

He puesto USERNAME, pero puede cambiar segun el unix que tengas. Por ejemplo, en solaris es LOGNAME. El comando "env" te da una lista de todas las variables de entorno definidas, puedes buscar cual tienes tu.

La pega de esto es que el usuario puede cambiar el valor de esta variable y "engañar" a tu programa.

Si quieres usar who, en vez de guardarlo en un fichero, puedes abrilo desde C con la funcion popen()

FILE *fichero = popen ("who", "r");

Al leer de fichero, lees la salida standard de who.
char usuario[100];
fgets (usuario, 100, fichero);

En usuario tendras la salida completa de who, debes serparar tu el nombre de usuario.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar