Текст программы для Linux (POSIX API)
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 | Просмотры: 543 | Нарушение авторских прав
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|