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


#include <sys/types.h>

#include <sys/stat.h>

#include <wait.h>

#include <fcntl.h>

#include <stdio.h>

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

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

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

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

//

int processFile( char *fileName)

{

nt handle, numRead, total = 0;

char buf;

// запрос к ОС на открытие файла (только для чтения)

handle = open( fileName, O_RDONLY);

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

do

{

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

numRead = read( handle, &buf, 1);

if (buf = 0х20) total++;

} while (numRead > 0);

// закрытие файла

close( handle);

return( total);

}

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

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

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

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

//

int main(int argc, char *argv[ ])

{

int i, pid, status;

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

for (i = 1; i< argc; i++)

{

// запускаем дочерний процесс

pid = fork();

if (pid == 0)

{

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

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

printf( "(PID: %d), File %s, spaces = %d\n", getpid(), argv[i], processFile( argv[i]));

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

exit();

}

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

else

printf( "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?

 



Дата добавления: 2022-02-05; просмотров: 264;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.