Каждая юникс-система имеет имя хоста для существования в инете .
Она должна при этом находиться в зоне Domain Name System (DNS).
Имя хоста при этом состоит из 2 частей :
1. hostname
2. domain name
Например : myhostname.my.mail.ru , при этом myhostname - это hostname ,
my.mail.ru - это domain.name .
Программа hostname выдала мне сейчас результат - localhost.localdomain .
Программа hostid мне распечатала - 7f0100.
Эти программы , а также domainname используют следующие функции :
int gethostname (char *name, size_t size) - возвращает hostname
int sethostname (const char *name, size_t length) - выставляет имя , для ее работы нужны привилегии
long int gethostid (void) - получает id-шник хоста
struct utsname - возвращает информаци об операционной системе
включает в себя члены
char sysname[] - название ОС
char release[] - номер релиза ОС
char version[] - версия ОС
char machine[] - cpu
char nodename[]
char domainname[]
Файловая концепция юникса нашла отражение в лозунге : любой обьект - это файл .
Традиционно юникс-система имеет файл `/etc/fstab' , в котором описываются все примонтированные
файловые системы . Все файловые системы (не только дисковые) описаны в `/etc/mtab' .
Эти 2 файла нельзя использовать напрямую , для этого существуют макросы
_PATH_FSTAB или _PATH_MNTTAB .
Структура доступа к fstab struct fstab используется функциями getfsent, getfsspec,getfsfile .
Члены структуры :
char *fs_spec - название дисковой партиции
char *fs_file - описывает доступ к партиции
char *fs_vfstype - тип файловой системы
char *fs_mntops - доп. опции монтирования
const char *fs_type - режим монтирования
Структура доступа к mtab
struct mntent
char *mnt_fsname
char *mnt_dir
char *mnt_type
char *mnt_opts
mnt_freq
mnt_passno
Функция int mount (const char *special_file, const char *dir,
const char *fstype, unsigned long int options, const void *data)
монтирует файловую систему .
Пример :
#include < sys/mount.h >
mount("/dev/hdb", "/cdrom", MS_MGC_VAL | MS_RDONLY | MS_NOSUID, "");
mount("/dev/hda2", "/mnt", MS_MGC_VAL | MS_REMOUNT, "");
Функция int umount2 (const char *file, int flags) размонтирует файловую систему .
Пример :
#include
umount2("/mnt", MNT_FORCE);
umount2("/dev/hdd1", 0);
С помощью int sysctl (int *names, int nlen, void *oldval,size_t *oldlenp,
void *newval, size_t newlen)
можно работать с системными параметрами . Она получает или устанавливает специальные параметры ОС .
При этом можно работать :
с доменными именами
с paging-параметрами
с network ARP
с максимальным числом открытых файлов
с драйверами
с установкой ядра
Большинство этих параметров можно читать в каталоге /proc/sys .
Системные параметры представлены иерархической структурой .
Для идентификации конкретного параметра в такой структуре нужно заполнить массив целых чисел .
Например , корневой компонет для всех paging-параметров - это число CTL_VM.
Сам параметр может быть как числом , так и строкой .
|