Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Настоящее имя пользователя
Это по крайней мере имя и фамилия пользователя. Некоторые системы допускают разделяемые запятыми поля для местоположения офиса, номера телефона и т.д., но это не стандартизовано.
Входной каталог
Этот каталог становится домашним каталогом для пользователей, когда они зарегистрируются в системе (
$HOMEcdВходная программа
Программа, которая запускается при регистрации пользователя. Обычно это оболочка, но не обязательно. Если это поле оставлено пустым, по умолчанию используется
/bin/shДоступ к базе данных пользователей осуществляется через процедуры, объявленные в
<pwd.h>#include <sys/types.h> /* XSI */#include <pwd.h>struct passwd *getpwent(void);void setpwent(void);void endpwent(void);struct passwd *getpwnam(const char *name);struct passwd *getpwuid(uid_t uid);Поля в
struct passwdstruct passwd { char *pw_name; /* имя пользователя */ char *pw_passwd; /* пароль пользователя */ uid_t pw_uid; /* id пользователя */ gid_t pw_gid; /* id группы */ char *pw_gecos; /* настоящее имя */ char *pw_dir; /* домашний каталог */ char *pw_shell; /* программа оболочки */};(Имя
pw_gecosНазначение каждой процедуры описано в следующем списке.
struct passwd *getpwent(void)Возвращает указатель на внутреннюю структуру
static struct passwdstruct passwdgetpwent()NULLvoid setpwent(void)Сбрасывает внутреннее состояние, так что следующий вызов
getpwent()void endpwent(void)«Закрывает базу данных», так сказать, будь то простой файл, сетевое соединение или что-нибудь еще.
struct passwd *getpwnam(const char *name)Ищет пользователя с членом
pw_namenamestatic struct passwdNULLstruct passwd *getpwuid(uid_t uid)Сходным образом ищет пользователя с номером ID, приведенным в
uidstatic struct passwdNULLgetpwuid()struct statgetpwnam()chown()fchown()getpwent()bsearch()getpwuid()getpwnam()ЗАМЕЧАНИЕ. Указатели, возвращаемые
getpwent()getpwnam()getpwuid()staticХорошенько рассмотрите определение
struct passwdstatic6.3.2. База данных групп
Формат базы данных групп
/etc/group/etc/passwd$ <b>grep arnold /etc/group</b>mail:x:12:mail,postfix,arnolduucp:x:14:uucp,arnoldfloppy:x:19:arnolddevel:x:42:miriam,arnoldarnold:x:2076:arnoldОпять-таки на одну группу отводится одна строка, с полями, разделенными двоеточием. Поля следующие.
Имя группы
Это имя группы, как оно отображается в '
ls -lПароль группы
Историческое поле. Оно больше не используется.
