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

1.8. Переименование файла

Для переименования файла или связи используют вызов:

#include <stdio.h>

int rename(const char* old, const char* new);

Функция rename() меняет имя файла, специфицированного в old, на имя, специфицированное в new. Если файл (или пустой каталог) с именем new существует, он заменяется.

При успешном завершении функция возвращает 0. В случае ошибки возвращается значение отличное от 0 и устанавливается errno.

Пример:

#include <stdio.h>

#include <stdlib.h>

 int main( void )

{

    if( rename( "old.dat", "new.dat" ) )

{

        puts( "Error renaming old.dat to new.dat." );

        return EXIT_FAILURE;

   }

    return EXIT_SUCCESS;

}

1.9. Удаление файла

Удалить файл (или связь) можно с помощью вызова:

#include <unistd.h>

int unlink( const char * path );

Функция unlink() удаляет файл (связь), чье имя указано в path. Если указана жесткая связь, то она удаляется, а счетчик связей соответствующего файла уменьшается на 1. Если указан файл или символическая связь, то реальное удаление объекта произойдет в тот момент, когда счетчик связей окажется равным 0. До этого момента реальное удаление откладывается.

При успешном завершении функция возвращает 0. В случае ошибки возвращается значение отличное от 0 и устанавливается errno.

Пример:

#include <unistd.h>

#include <stdlib.h>

 int main( void )

{

    if( unlink( "vm.tmp" ) )

{

        puts( "Error removing vm.tmp!" );

         return EXIT_FAILURE;

    }

     return EXIT_SUCCESS;

}

1.10. Обработка ошибок

Разница между системными вызовами и библиотечными функциями проявляется в способе передачи процессу информации об ошибке, произошедшей во время выполнения системного вызова или функции библиотеки.

Обычно в случае возникновения ошибки системные вызовы возвращают целое значение -1 и устанавливают значение глобальной системной переменной errno, указывающее причину возникновения ошибки. Системный заголовочный файл <errno.h> содержит коды ошибок, значения которых может принимать переменная errno, с краткими комментариями. Заметим, что значение errno не обнуляется следующим нормально завершившимся системным вызовом. Следовательно, значение errno имеет смысл только после вызова, который завершился с ошибкой.

Стандарт ANSI C определяет две функции, помогающие сообщить причину ошибочной ситуации:

#include <string.h>

char *strerror(int errnum);

и

#include <errno.h>

#include <stdio.h>

void perror(const char *s).

Функция strerror() принимает в качестве аргумента errnum номер ошибки и возвращает указатель на строку, содержащую сообщение о причине ошибочной ситуации. Функция perror() выводит в стандартный поток сообщений об ошибках (обычно на экран) содержимое строки s и вслед за ним – системную информацию об ошибочной ситуации, основываясь на значении переменной errno.

Примечание

Макрокоманды EXIT_SUCCESS и EXIT_FAILURE, объявленные в файле "stdlib.h", используются для стандартного значения состояния успеха и отказа, соответственно.

Функция

void _exit (int status),

используется для завершения процесса с состоянием status.