Назад

Содержание

Вперед


1.4.1. Соединение многих файловых систем в одну ("монтирование").

    ОС UNIX по умолчанию имеет, по крайней мере, одну файловую систему, создаваемую при ее генерации. К ней можно присоединить файловые системы, находящиеся на других устройствах. Для этого необходимо выполнить процедуру, которую называют "монтированием" (mount). "Монтирование" производится при помощи системного вызова mount ( ). Формат его следующий:

#include <sys/types.h>
#include <sys/mount.h>
    int mount (const char *spec, const char *path, int mode);

    (Здесь и далее указываются файлы-заголовки ( .h ), в которых определяются прототипы функций, константы и другие объекты, используемые для программирования. Где находятся эти файлы, а также, что еще необходимо для построения приложений в среде UNIX, подробно описывается ниже).

    Аргумент spec задает имя специального файла, соответствующего устройству, содержащему файловую систему, path - полное имя директории в существующей файловой системе, mode - режим "монтирования". Указание режима необходимо при присоединении файловых систем, отличающихся по своей природе от файловой системы UNIX (например, файловой системы MS DOS). mount ( ) возвращает значение 0 при успешном завершении и - 1, если в процессе выполнения операции произошли ошибки.

    Новая файловая система присоединяется к существующей в точке, указанной параметром path. Другими словами, содержимое директории path заменяется содержимым "корневой" директории новой файловой системы.

    Рассмотрим пример присоединения файловой системы, находящейся на дискете, к директории "/mnt". Предполагается, что устройству соответствует специальный файл с именем "/dev/diskette" (см. прототип функции perror ( ) в [6]).

if (( err = mount ("/dev/diskette", "/mnt", 0 )) = = - 1 )
   perror ("mount: ошибка монтированная");

    Операция обратная "монтированию" - отсоединение ("де-монтирование") производится системным вызовом umount ( ):

#include <sys/types.h>
#include <sys/mount.h>
    int mount (const char *path);

    Ее аргумент задает полное имя директории, к которой файловая система была ранее присоединена. При успешном завершении функция возвращает 0. "Де-монтирование" файловой системы не может быть произведено, если какой-либо процесс производит операции ввода-вывода с файлами, входящими в ее состав.