Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lr3.doc
Скачиваний:
2
Добавлен:
08.11.2019
Размер:
99.84 Кб
Скачать

М инистерство образования и науки Украины

Севастопольский национальный технический университет

работа с файлами и каталогами

Методические указания

к выполнению лабораторной работы №3

по дисциплине «Системное программирование»

для студентов направления подготовки

050201 «Системная инженерия»

дневной формы обучения

Севастополь

2010

УДК 681.5

Работа с файлами и каталогами: Методические указания к выполнению лабораторных работ по дисциплине «Системное программирование» для студентов направления подготовки 050201 «Системная инженерия» дневной формы обучения /Разраб. Д.Н. Старинская, П.Л. Светличный. – Севастополь: Изд-во СевНТУ, 2009. – 12 с.

Целью методических указаний является оказание помощи студентам при выполнении лабораторной работы, предназначенной для освоения работы с компилятором gcc, механизма передачи в программу параметров вызвавшей ее командной строки, поразрядных операций языка С.

Методические указания предназначены для студентов по направлению подготовки 050201 «Системная инженерия» дневной формы обучения.

Методические указания рассмотрены и утверждены на заседании кафедры технической кибернетики, протокол № 5 от 26 марта 2008г.

Допущено учебно-методическим центром СевНТУ в качестве методических указаний.

Рецензент:

1. Цель работы

Изучение системных вызовов для работы с файлами.

2. Постановка задачи

Напишите программу, которая решает задачу вашего варианта из лабораторной работы №2, используя передачу данных через двоичные (не текстовые) файлы.

Для работы с файлами используйте системные вызовы open(), creat(), read(), write(), close().

Задание включает следующие подзадачи, которые должны быть реализованы в виде отдельных функций, вызывающихся с помощью соответствующих опций командной строки:

1) Опция -g: формирование и вывод (на экран и в двоичный файл) 10-15 наборов неупакованных чисел, содержащих информацию о состоянии устройства.

2) Опция -p: чтение данных из файла и упаковка в слова состояния устройства. Вывод полученных упакованных чисел в новый файл и на экран.

3) Опция -u: чтение упакованных слов из файла, распаковка и вывод на экран.

Для хранения данных использовать тип unsigned short (в строке форматирования функций типа printf(), scanf() добавляется префикс h: %hu, %hx, %hd).

Должны быть реализованы проверки правильности выполнения всех операций с файлами.

3. Краткие теоретические сведения

3.1. Системные вызовы

3.1.1. 6Открытие файла: Системный вызов open

Системный вызов open создает связь между процессом и файлом. Эта связь называется дескриптором файла.

В самом общем случае, прежде чем читать или писать, вы должны проинформировать систему о действиях, которые вы намереваетесь выполнять в отношении файла; эта процедура называется открытием файла. Если вы собираетесь писать в файл, то, возможно, его потребуется создать заново или очистить от хранимой информации. Система проверяет ваши права на эти действия (файл существует? вы имеете к нему доступ?) и, если все в порядке, возвращает программе небольшое неотрицательное целое, называемое дескриптором файла. Всякий раз, когда осуществляется ввод-вывод, идентификация файла выполняется по его дескриптору, а не по имени. (Дескриптор файла аналогичен файловому указателю, используемому в стандартной библиотеке.) Вся информация об открытом файле хранится и обрабатывается операционной системой; программа пользователя обращается к файлу только через его дескриптор.

#include <fcntl.h>

int fd = open(char *name, int how)

Для открытия файла необходимо определить имя файла и тип соединения.

Аргумент name - это строка, содержащая имя файла. Второй аргумент, flags, имеет тип int и специфицирует, каким образом должен быть открыт файл. Его основными значениями являются:

O_RDONLY - открыть только на чтение;

O_WRONLY - открыть только на запись;

O_RDWR - открыть и на чтение, и на запись.

Открытие файлов – это служба ядра. Системный вызов open – это требование, которое выдает ваша программа ядру. Если ядро обнаружит ошибку при обращении к нему, то оно вернет код возврата, равный 1.

Ввод с клавиатуры и вывод на экран применяются настолько часто, что для удобства работы с ними предусмотрены специальные соглашения. При запуске программы командный интерпретатор (shell) открывает три файла с дескрипторами 0, 1 и 2, которые называются соответственно стандартным вводом, стандартным выводом и стандартным файлом ошибок. Если программа читает из файла 0, а пишет в файлы 1 и 2 (здесь цифры - дескрипторы файлов), то она может осуществлять ввод и вывод, не заботясь об их открытии.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]