Получить информацию о пользователе по имени
#include <sys/types.h>#include <shadow.h>struct spwd * getspnam( char *name );struct spwd * getspnam_r( const char *name,struct spwd *result,char *buffer,size_t bufsize );
_SC_GETPW_R_SIZE_MAX
.libc
Функции getspnam() и getspnam_r() позволяют процессу получить больше информации о пользователе. Функция getspnam() использует статический буфер, который перезаписывается при каждом вызове.
Указатель на структуру struct spwd, содержащую запись из базы данных теневых паролей с совпадающим name, или NULL
при возникновении ошибки или при невозможности найти требуемую запись.
#include <stdio.h>#include <stdlib.h>#include <pwd.h>#include <shadow.h>/** Print information from the password entry* about the user name given as argv[1].*/int main( int argc, char **argv ){struct spwd *sp;if ( argc < 2 ){printf( "%s username \n", argv[0] );return (EXIT_FAILURE);}if ( (sp = getspnam( argv[1] )) == (struct spwd *)0 ){fprintf( stderr, "getspnam: unknown %s\n", argv[1] );return (EXIT_FAILURE);}printf( "login name %s\n", sp->sp_namp );printf( "password %s\n", sp->sp_pwdp );return (EXIT_SUCCESS);}
Unix
getspnam()
getspnam_r()
struct spwd, fgetspent(), getlogin(), getspent(), getpwuid(), putspent()
Предыдущий раздел: Описание API системной библиотеки