Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Использование системных вызовов.




Для выполнения данной практической работы требуется установленный дистрибутив 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.







Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных