getspnam(), getspnam_r()

Получить информацию о пользователе по имени

Прототип:

#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 );

Аргументы:

name
Имя пользователя.
result
(только для getspnam_r()) Указатель на структуру struct spwd, где функция может хранить запись.
buffer
(только для getspnam_r()) Область памяти, которую функция может использовать для выделения памяти, на которую ссылается структура struct spwd. Существует возможность определить максимальный размер, необходимый для данной области памяти путем вызова sysconf() с аргументом _SC_GETPW_R_SIZE_MAX.
bufsize
(только для getspnam_r()) Размер области памяти (в символах), на которую указывает buffer.

Библиотека:

libc

Описание:

Функции getspnam() и getspnam_r() позволяют процессу получить больше информации о пользователе. Функция getspnam() использует статический буфер, который перезаписывается при каждом вызове.


Note: Функции fgetspent(), getspent() и 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 системной библиотеки