Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Системные вызовы для работы с файлами




Открытие файла на чтение или запись с пом системного вызова:

Include <fcntl.h>. Если файл не существует, он может быть создан.

int open(const char*name, int mode, [int perm]). Первый аргумент является указателем на имя файла. Аргумент mode указывает на режим открытия файла и представляет собой побитное объединение флагов, с помощью операции ИЛИ (O_RDONLY, O_WRONLY, O_RDWR). Аргумент perm, определяющий права доступа к файлу, используется только при создании файла или если во втором пар-ре использовали O_CREATE. Именно из 3 пар-ра будет вычит значение umask. Если операция открытия файла закончилась удачно, то будет возвращен

файловый дескриптор — указатель на файл, использующийся в последующих операциях чтения, записи и т. д. В случае неудачи open возвратит -1, а глобальная переменная errno будет содержать код ошибки. Дескрипторы можно использ для потоков в/в. Мы можем закрыть люб дескриптор.

Закрытие файла Include <unistd.h>. int close(int fd); Функция разрывает связь между файловым дескриптором и открытым файлом. В случае успеха close возвращает нулевое значение, в противном случае возвращается -1 .

Чтение из файла происходит с пом:

int read(int fd, void*buf, int len)

Функции read позволяет считывать данные из файла, на который указывает файловый дескриптор. Считанные данные помещаются в бу-

фер приложения, указатель на который передается в аргументе buf. Общее число считанных байт в нормальной ситуации равно сумме размера буфера Len. Возврат больше 0 –кол-во прочитанных байтов, если read вернул 0 – то конец файла.

Запись в файл: Функция используется для записи данных в файл:

int write (int fd, void*buf,int len)

Данные для записи в файл находятся в буфере, указанном аргументом buf . После завершения операции значение файлового указателя будет увеличено на len – кол-во данных.

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

int lseek(int fd, int offset, int whence). С помощью функции lseek можно установить файловый указатель на любое место файла и тем самым обеспечить прямой доступ к любой части файла. Интерпретация аргумента offset зависит от аргумента whence, который может принимать следующие значения:

В случае успеха функция возвращает положительное целое, равное текущему значению файлового указателя.Пример: прочитать последние 100 байт из файла f.dat

Int c, char buf[100]; fd=open(“f.dat”,O_RDONLY);

Lseek(fd, -100,SEEK_ENT);

c=read(fd,buf,100);close(fd);

 

25. Понятие «процесс» в ОС UNIX. Контекст процесса; свойства процесса; состояние процесса.

Процесс – можно понимать программу, кот выполн-ся под упр-ем ОС. Контекст процесса вкл: пользоват контекст(код и данные располож в адресном пр-ве процесса) и контекст ядра(стек ядра, образуется в режиме ядра и данные ядра). Данные ядра – UID –идентификатор пользователя , PID - процесса, GID - группы. Св-ва процесса:1) сегмент кода, 2)сегмент данных,3)стек,4)состояние процессора PSW,5)права и полномочия для UNIX,6)ресурсы. В каждый момент времени процесс может исполн и не исполн, причем кот не исполн готов к исполнению, так и не готов. Схема состояния процесса:

В состоянии блокировке процесс м.попасть, если процесс произвел такой сист вызов, после кот его продолжение невозможно. В ОС UNIX легковесный процесс –представл собой доп единицу планировки в рамках одного обыч процесса. Обычн процесс может представ как группу легковесных. Легковесный процесс – поток, нить – thread. У каждой нити есть свой собств стек и свой счетчик команд из PSW. При прогр-и легковесн процессов говорим об парал программ-е с разделен данными. Св-ва процесса в Unix: 1)код, м.б. разделяемый, св-во доступно только на чтение.2)сегмент данных вкл стек, доступно Read/WR.3)сост-е регистра – контекст, вкл счетчик команд, PSW, указатель стека и все РОН. Пока прогр-е не в сост-и выполнения содержимое его регистров храниться в спуц структуре данных – ядре.4)таблица дискрипторов – привяз номера к реальн структуре в ядре.5)команд строка – структура данных из массивов указателей на аргументы команд.строки. >ls –l -a /usr/local.

 

Argv – ссылка на массив указателей:

char*argv:

 

 

6)окружение – стр-ра данных содерж указатели на строки переменных окружения.

Строки заканчиваются \0.

7)текущий каталог – люб процесс наход в каталоге файловой системы.

8)корневой каталог - в UNIX м. организовать файл систему и всем его потомкам, частью дерева каталогов, имеющий общий корень. Процессу можно определить корнев каталог jal, а каталоги за его перелом будут невидимы.

9)umask – при создании новых файлов значение этого пар-ра побитово вычисляется из прав доступа

10) идентификаторы – UID и GID – факт полномочия программы, определяют права процесса в файловой системе. Эти прог-мы выполн с правами пользователя, владещ правами программы, а не тот кто запустил.

11)идентификатор процесса

12)диспозиция обработки сигнала – это то как процесс реаг-ет на определен сигналы.

13) счетчики потребл-х ресурсов.

 


Поделиться:

Дата добавления: 2015-01-14; просмотров: 83; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты