Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_ПСРВ.doc
Скачиваний:
32
Добавлен:
12.02.2016
Размер:
1.6 Mб
Скачать

3. Содержание отчёта

  1. Номер практической работы.

  2. Название и цель работы.

  3. Краткое описание команд.

  4. Результаты выполнения упражнений 2.1-2.4.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №12

Функции управления файловой системой

Цель – изучение основных системных вызовов (библиотечных функций), управляющих файлами в ОС QNX

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

1.1. Смена текущего каталога

Процесс может изменить текущий каталог с помощью системного вызова:

#include<unistd.h>

int chdir(const char *path);

Функция chdir() изменяет текущий рабочий каталог на path, который может быть относительным или абсолютным именем. При успешном завершении функция возвращает 0. В случае ошибки возвращается -1 и устанавливается errno.

Пример:

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

 int main( int argc, char* argv[] )

{

    if( argc != 2 )

{

        fprintf( stderr, "Use: cd <directory>\n" );

        return EXIT_FAILURE;

  }

     if( chdir( argv[1] ) == 0 )

{

        printf( "Directory changed to %s\n", argv[1] );

        return EXIT_SUCCESS;

    } else

{

        perror( argv[1] );

        return EXIT_FAILURE;

    }

}

1.2. Создание каталога

Новый каталог можно создать с помощью вызова:

#include <sys/types.h>

#include <sys/stat.h>

int mkdir(const char *path, mode_t mode);

Функция mkdir() создает новый пустой каталог, специфицированный в path с разрешениями доступа, заданными в mode в виде комбинации флагов разрешения, определенных в заголовочном файле <sys/stat.h>. При успешном завершении функция возвращает 0. В случае ошибки возвращается -1 и устанавливается errno.

Пример:

Создается новый каталог с именем /src в /hd:

 

#include <sys/types.h>

#include <sys/stat.h>

#include <stdlib.h>

int main( void )

{

    mkdir( "/hd/src",

           S_IRWXU |

           S_IRGRP | S_IXGRP |

           S_IROTH | S_IXOTH );

    return EXIT_SUCCESS;

}

1.3. Биты режима для прав доступа

Все символы, перечисленные в этом разделе определены в файле 'sys/stat.h'.

Эти символические константы определены для битов режима файла, которые управляют правом доступа для файла:

S_IRUSR

S_IREAD

бит права чтения для владельца файла. На многих системах, этот бит - 0400. S_IREAD - устаревший синоним, предусмотрен для совместимости.

S_IWUSR

S_IWRITE

бит права записи для владельца файла. Обычно 0200. S_IWRITE - устаревший синоним, предусмотрен для совместимости.

S_IXUSR

S_IEXEC

бит права записи для владельца файла. Обычно 0100. S_IWRITE - устаревший синоним, предусмотрен для совместимости.

S_IRWXU

Это эквивалент ' (S_IRUSR | S_IWUSR | S_IXUSR) '.

S_IRGRP

бит права чтения для владельца группы файла. Обычно 040.

S_IWGRP

бит права записи для владельца группы файла. Обычно 020.

S_IXGRP

бит права выполнения или поиска для владельца группы файла. Обычно 010.

S_IRWXG

Это эквивалент ' (S_IRGRP | S_IWGRP | S_IXGRP) '.

S_IROTH

бит права чтения для других пользователей. Обычно 04.

S_IWOTH

бит права записи для других пользователей. Обычно 02.

S_IXOTH

бит права выполнения или поиска для других пользователей. Обычно 01.

S_IRWXO

Это эквивалент ' (S_IROTH | S_IWOTH | S_IXOTH) '.