Программирование в стандарте POSIX


Создание, удаление, копирование и перемещение файлов - часть 3


С помощью одной команды mkdir можно сформировать несколько каталогов. В каждом из них появятся ссылки . и .., которые другими способами создать нельзя. По умолчанию устанавливаются все биты режима доступа; режим можно задать и явно с помощью опции -m.

Если нужен не один, а целая цепочка каталогов, следует воспользоваться опцией -p. Соответствующий пример приведен в пример 4.36.

mkdir -p work/tmp/save

Листинг 4.36. Пример использования служебной программы mkdir для создания цепочки каталогов.

По этой команде в текущем каталоге появится подкаталог work, в нем - каталог   tmp, а уже в нем - каталог   save.

Смысл аргументов функции mkdir() тот же, что и для creat(), в случае неудачи возвращается -1, но при нормальном завершении результат равен 0 (mkdir() не оставляет новый каталог открытым). Перечисленные выше условия неудачного завершения creat() (кроме превышения максимального числа одновременно открытых файлов) применимы и к mkdir().

Интерфейс, сходный с mkdir, имеют утилита mkfifo для создания каналов:

mkfifo [-m режим_доступа] канал ...

Заметим, что здесь отсутствует опция -p) и одноименная функция (см. пример 4.37).

#include <sys/stat.h> int mkfifo (const char *path, mode_t mode);

Листинг 4.37. Описание функции mkfifo().

Создать новые ссылки (жесткие или символьные) на файл позволяют служебная программа ln:

ln [-fs] исходный_файл целевой_файл ln [-fs] исходный_файл ... целевой_каталог

а также функции link() и symlink() (см. пример 4.38).

#include <unistd.h> int link (const char *source_path, const char *target_path); #include <unistd.h> int symlink (const char *link_contents, const char *link_name);

Листинг 4.38. Описание функций link() и symlink().

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

Утилита ln без опций создает новые жесткие ссылки на заданные исходные файлы. В первой форме - одну ссылку с именем целевой_файл, во второй - несколько новых ссылок в существующем целевом каталоге, имена которых задаются последними компонентами маршрутных имен исходных файлов.


Начало  Назад  Вперед



Книжный магазин