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


Пример 4.42


#include

#include

#include

#include

/* Программа выполняет обработку */

/* с осторожным замещением */

/* основного файла рабочим */

#define MAIN_FILE "/home/galat/garb/temp/mfile"

#define OLD_FILE "/home/galat/garb/temp/ofile"

#define WORK_FILE "/home/galat/garb/temp/wfile"

int main (void) {

/* Необходимые описания */

/* . . . */

int work_success = 1;

/* Выполнение операций над рабочим файлом */

/* . . . */

/* В случае неудачи выдадим диагностическое сообщение и удалим рабочий файл */

if (! work_success) {

fprintf (stderr, "\nНеудачное завершение операций над рабочим файлом %s\n", WORK_FILE);

unlink (WORK_FILE);

return (-1);

}

/* Установим режим доступа к рабочему файлу, */

/* подходящие для последующего использования */

/* Пусть, например, это будет доступ для всех */

/* только на чтение */

chmod (WORK_FILE, S_IRUSR | S_IRGRP | S_IROTH);

/* Удалим ранее сохраненную старую версию основного файла */

unlink (OLD_FILE);

/* Сохраним текущую версию основного файла */

if (link (MAIN_FILE, OLD_FILE)) {

perror ("Не удалось сохранить текущую версию основного файла");

return (-1);

}

/* Удалим текущую версию основного файла */

unlink (MAIN_FILE);

/* Сделаем рабочий файл основным */

if (link (WORK_FILE, MAIN_FILE)) {

perror ("Не удалось сделать рабочий файл основным");

/* Восстановим основной файл */

link (OLD_FILE, MAIN_FILE);

return (-1);

}

/* Удалим рабочий файл */

unlink (WORK_FILE);

return 0;

}




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



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