- •Исследование системных вызовов для работы с файлами
- •Содержание
- •1. Цель работы
- •2. Краткие теоретические сведения
- •2.1. Cистемные вызовы
- •2.1.1. Открытие файла, системный вызов open
- •2.1.2. Чтение файла, системный вызов read
- •2.1.2. Запись в файл, системный вызов write
- •2.1.3. Закрытие файла, системный вызов close
- •2.1.4. Создание файла, системный вызов creat
- •2.2. Ошибки при выполнении системных вызовов
- •2.3. Генерация случайных чисел
- •2.4. Пример программы
- •3. Задания на лабораторную работу
- •4. ТехническиЕ средствА для выполнения работы
- •5. Порядок выполнения лабораторной работы
- •6. Содержание отчета о выполнении лабораторной работы
- •7. Порядок защиты работы
- •8. Контрольные вопросы
- •Библиографический список
- •Приложение а (справочное) Текст программы
- •Приложение б (справочное) Результат работы программы
3. Задания на лабораторную работу
Написать программу, которая должна содержать три функции, вызывающихся с помощью соответствующих опций командной строки.
Опция –g должна осуществлять формирование и вывод (на экран и в двоичный файл) 10-15 наборов неупакованных чисел, содержащих информацию о состоянии устройства.
Опция –p должна осуществлять чтение данных из файла и упаковка в слова состояния устройства. Вывод полученных упакованных чисел в новый файл и на экран.
3) Опция –u должна осуществлять чтение упакованных слов из файла, распаковка и вывод на экран.
Передача данных должна производиться через двоичные (не текстовые) файлы. Для работы с файлами используйте системные вызовы open(), creat(), read(), write(), close(). Для хранения данных использовать тип unsigned short (в строке форматирования функций типа printf(), scanf() добавляется префикс h: %hu, %hx, %hd).Должны быть реализованы проверки правильности выполнения всех операций с файлами. В таблице 2 представлены форматы слова состоянии устройства в соответствии с вариантами индивидуальных заданий.
Таблица 2 - Форматы слова состоянии устройства для вариантов заданий
вариант |
задание | ||||||||||||||||
1 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
H |
H |
T |
T |
T |
T |
T |
T |
T |
T |
T |
S |
S |
S |
S |
S | |
2 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
C |
C |
C |
C |
E |
I |
P |
0 |
0 |
0 |
K |
K |
K |
0 |
0 |
0 | |
3 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
N |
N |
N |
N |
E |
C |
C |
C |
C |
C |
C |
C |
C |
C |
0 |
P | |
4 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
D |
R |
R |
R |
R |
A |
A |
A |
A | |
5 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
P |
P |
P |
0 |
F |
F |
0 |
H |
H |
H |
H |
0 |
0 |
V |
V |
V | |
6 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
1 |
1 |
0 |
1 |
T |
T |
D |
N |
N |
N |
N |
N |
N |
N |
N |
N | |
7 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
S |
S |
S |
0 |
D |
0 |
F |
0 |
B |
B |
B |
B |
B |
B |
B |
B | |
8 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
U |
U |
U |
U |
U |
U |
U |
U |
R |
W |
E |
0 |
0 |
0 |
0 |
X | |
9 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
O |
O |
O |
O |
O |
C |
D |
N |
N |
N |
N |
N |
N |
N |
N |
N | |
10 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
G |
G |
G |
G |
G |
G |
G |
G |
S |
S |
S |
S |
P |
0 |
0 |
0 | |
11 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
C |
C |
C |
U |
U |
U |
U |
U |
E |
E |
E |
E |
E |
E |
0 |
B | |
12 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
D |
A |
A |
A |
B |
B |
B |
0 | |
13 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
D |
D |
D |
D |
D |
M |
M |
M |
M |
M |
Y |
Y |
Y |
Y |
Y |
Y | |
14 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
S |
S |
S |
S |
S |
M |
M |
M |
M |
M |
M |
H |
H |
H |
H |
H |
Продолжение таблицы 2.
вариант |
задание | ||||||||||||||||
14 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
S |
S |
S |
S |
S |
M |
M |
M |
M |
M |
M |
H |
H |
H |
H |
H | |
15 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
F |
F |
F |
F |
F |
F |
F |
F |
R |
W |
L |
L |
L |
L |
L |
L | |
16 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
F |
F |
F |
F |
F |
F |
F |
F |
R |
W |
L |
L |
L |
L |
L |
L | |
17 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
O |
O |
O |
O |
O |
O |
O |
O |
0 |
P |
L |
L |
L |
L |
L |
L | |
18 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
X |
X |
X |
X |
X |
X |
Y |
Y |
Y |
Y |
Y |
Y |
C |
C |
C |
C | |
19 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
C |
C |
F |
F |
D |
D |
D |
D |
D |
D |
D |
D |
D |
D |
D |
D | |
20 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
O |
A |
A |
R |
R |
R |
0 |
1 |
D |
D |
D |
D |
D |
D |
D |
D | |
21 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
N |
N |
N |
N |
0 |
P |
P |
P |
U |
U |
U |
U |
U |
U |
U |
U | |
22 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
N |
N |
N |
M |
M |
M |
0 |
L |
W |
W |
W |
W |
W |
W |
W |
W | |
23 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
S |
S |
S |
S |
S |
S |
D |
D |
D |
D |
D |
D |
0 |
C |
C |
C | |
24 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
T |
T |
T |
0 |
S |
S |
S |
S |
L |
L |
L |
L |
L |
L |
L |
L | |
25 |
№ разряда |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
значение |
1 |
0 |
C |
C |
0 |
0 |
0 |
0 |
P |
N |
N |
N |
N |
N |
N |
N |