Использование системных вызовов.
Для выполнения данной практической работы требуется установленный дистрибутив Linux или Unix.
Порядок выполнения работы:
1. Изучить состав и назначение библиотеки <fcntl.h>.
2. Создать 2 файла с именами source и log
3. Записать в файл source текст.
4. Написать программу, которая будет выполнять следующие действия:
· Используя функцию fchmod, обрабатывающую файловые дескрипторы, изменить права доступа к файлам так, чтобы source был доступен только для чтения, а log – только для записи.
Примечание: реализовать возможность проверки на соответствующие атрибуты файлов и, в случае их наличия, не выполнять команду их изменения.
· При помощи системного вызова read считать из созданного файла source текст и вывести его на экран с указанием количества считанных байт.
· При помощи системного вызова write записать в файл log сведения о количестве считанных байт выполненной операции чтения в формате:
Считано из файла <Имя файла>: <Число байт> байт
· Аналогичным образом дописать следующей строкой в файл log считанный текст из файла source, но с обратный порядком слов и без знаков препинания.
5. Модернизировать программу таким образом, чтобы название файла со считываемым текстом можно было задавать вручную.
Пример 1:
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char *argv[])
{
int input_file = 0; //Файловая переменная
input_file = open("input.txt", O_RDONLY); //Открытие файла для чтения
char buff[64]; //Буфер для чтения
memset(buff, 0, 64); //Заполнение буфера нулями
int count = 0; //Переменная для хранения количества байт
count = read(input_file, buff, 64); //Чтение из файла
close(input_file); //Закрытие файловый дескриптор
printf("Содержимое файла: %s. Всего прочитано: %i", buff, count);
return 0;
}
Пример 2:
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char *argv[])
{
char buff[2048];
int file = open("1.txt", O_RDWR); //Открытие файла
read(file, buff, 2048); //Вывод содержимого
printf("Содержимое файла:rn%s", buff);
memset(buff, 0, 2048); //Обнуление буфера
printf("Введите строку, которую следует дописать в файл");
scanf("%s", buff); //Считывание строки
write(file, buff, strlen(buff)); //Запись в файл
close(file);
}
В отчёте необходимо предоставить текст программы из пункта 5, содержимое файлов source и log.
Не нашли, что искали? Воспользуйтесь поиском:
|