АкушерствоАнатомияАнестезиологияВакцинопрофилактикаВалеологияВетеринарияГигиенаЗаболеванияИммунологияКардиологияНеврологияНефрологияОнкологияОториноларингологияОфтальмологияПаразитологияПедиатрияПервая помощьПсихиатрияПульмонологияРеанимацияРевматологияСтоматологияТерапияТоксикологияТравматологияУрологияФармакологияФармацевтикаФизиотерапияФтизиатрияХирургияЭндокринологияЭпидемиология

Текст программы для Linux (POSIX API)

Прочитайте:
  1. Автоматизированное рабочее место врача: программное обеспечение. Специализированные медицинские прикладные программы
  2. Актуальный пример разработки программы в случае моббинга
  3. Антистрессовые программы
  4. Б. Текстовой отчет
  5. ВЗЯТИЕ КАЛА ДЛЯ КОПРОГРАММЫ.
  6. ГИБКОСТЬ КОНТЕКСТА
  7. Глава 7. ПРОГРАММЫ ОБЯЗАТЕЛЬНОГО МЕДИЦИНСКОГО СТРАХОВАНИЯ
  8. Диагностическая и лечебная программы
  9. ИНСУЛИН, САХАРНЫЙ ДИАБЕТ и ПРОГРАММЫ СветЛ.
  10. Каковы основные составляющие эффективной программы снижения веса?

linclude <sys/types.h> linclude <sys/stat.h> #include <wait.h> finclude <fcntl,h> #include <stdio.h>

// Название: processFile

// Описание: обработка файла, подсчет кол-ва пробелов

// Входные параметры: fileName - имя файла для обработки

// Выходные параметры: кол-во пробелов в файле

//

int processFilet char *fileName) {

int handle. numRead. total - 0:

char buf:

// запрос к ОС на открытие файла (только для чтения) handle - opent fileName. 0_RDONLY):

// цикл чтения до конца файла do {

// чтение одного символа из файла

numRead - readt handle. &buf. 1):

if (buf — 0x20) total++: } while (numRead > 0):

// закрытие файла closet handle): returnt total): }

// Название: main

// Описание: главная программа

// Входные параметры: список имен файлов для обработки

// Выходные параметры: нет

//

int maintint argc. char *argv[]) {•

int i. pid. status:


// для всех файлов, перечисленных в командной строке for (i - 1: i< argc: i++) { // запускаем дочерний процесс pid - forkO; if (pid == 0) {

// если выполняется дочерний процесс // вызов функции счета количества пробелов в файле

printft "(PID: M). File'its, spaces - *d\n". getpidO. argv[ i]. processFilet argvt i])):

// выход из процесса exitO; }

// если выполняется родительский процесс else

printft "processFile started (pid=*d)\n", pid): }

// ожидание окончания выполнения всех запущенных процессов if (pid!= 0) while (wait(&status)>0): return: }

Из этого текста видно, что в этом случае все вычисления принимают статус про­цессов, а не тредов.

В заключение можно заметить, что очень трудно сравнивать API. При их раз­работке создатели, как правило, стараются реализовать полный набор основных функций, используя которые можно решать различные задачи, хотя, порой, и раз­личными способами. Один набор будет хорош для одного набора задач, другой — для иного набора задач. Тем более что фактически у нас сейчас существенно огра­ниченное множество API. Причина в том, что доминируют наиболее распростра­ненные ОС, на распространение которых в большей степени оказали влияние не достоинства или недостатки этих ОС и их API, а правильная маркетинговая по­литика фирм, их создавших.

Контрольные вопросы и задачи

Вопросы для проверки

1. Перечислите и поясните основные принципы построения операционных систем.

2. Расскажите об основных моментах, характерных для микроядерных ОС. Ка­
кие основные функции должно выполнять микроядро ОС?

3. Перечислите основные требования, предъявляемые к операционным системам
реального времени.

4. Какие задачи возлагаются на интерфейс прикладного программирования
(API)?


5. Какими могут быть варианты реализации API? В чем заключаются достоин­
ства и недостатки каждого варианта?

6. Что такое библиотека времени выполнения (RTL)?

7 Что такое POSIX? Какими преимуществами обладают программы, созданные ' с использованием только стандартных функций, предусмотренных POSIX'


 


Дата добавления: 2015-01-18 | Просмотры: 537 | Нарушение авторских прав



1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |



При использовании материала ссылка на сайт medlec.org обязательна! (0.003 сек.)