Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС / Тема_8.ppt
Скачиваний:
140
Добавлен:
11.04.2015
Размер:
1.17 Mб
Скачать

8.1.1. Основные определения

Пример на языке С, демонстрирующий дублирование произвольного файла с помощью библиотечных функций read() и write().

#include <fcntl.h> #include <io.h> int main()

{

int fin, fout; //Дескрипторы файлов char buff [512];

int n; // Количество прочитанных байтов

//Открыть файлы для ввода и вывода. fin = open ("data.txt", O_RDONLY);

if (fin == -1) return 1;

fout = open ("newf.txt", O_CREAT \ O_TRUNC | O_WRONLY);

//Файлы открыты - можно копировать

while ((n = read(fin, buff, 512)) >0) write (fout, buff, n);

return 0;

}

Операционные системы

11

8.1.1. Основные определения

Функции стандартной библиотеки языка С open(), read() и write() в Windows вызывают соответствующие им функции API Win32: CreateFile(), ReadFile() и WriteFile().

Операционные системы

12

8.1.1. Основные определения

Решения предыдущей задачи, но с использованием только функций API

Win32.

#include <windows.h>

 

int main()

 

{

 

HANDLE fin, fout;

//Дескрипторы файлов

char buff [512];

 

DWORD n, ocnt; //Кол.прочитанных/записанных байтов BOOL s; //=0, если EOF

// Открыть файлы для ввода и вывода

fin = CreateFile ("data.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);

if (fin==INVALID_HANDLE_VALUE) return 1;

fout = CreateFile ("newf.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

// Копировать файл

while ((s = ReadFile (fin, buff, 512, &n, NULL))>0 && n>0) WriteFile (fout, buff, n, &ocnt, NULL);

return 0;

Операционные системы

13

}

 

 

8.1.1. Основные определения

Программа, вызывающая функции API Win32, будет работать быстрее своего аналога с функциями библиотеки языка.

Однако эта программа непереносима на другие платформы, так как зависит от операционной системы Windows.

В то же время эта программа короче, так как не использует переходники в виде библиотечных функций языка.

Операционные системы

14

8.1.1. Основные определения

Вызов системной функции без использования функции стандартной библиотеки.

Операционные системы

15

8.1.1. Основные определения

Особенности ИПП, реализованного объектно-ориентированным языком программирования.

Функции, точнее - методы, библиотек классов позволяют разработать любое Windows приложение, причем эта разработка может вестись в режиме визуального проектирования.

Методы классов содержатся в DLL-библиотеках и, в отличие от функций библиотеки языка, в программу не включаются.

Многие из этих методов, как и функции библиотеки языка, рано или поздно обращаются к функциям ОС, так как управление ресурсами - это прерогатива операционной системы, и никакая прикладная программа не должна, минуя ОС, получать доступ к системным ресурсам.

Операционные системы

16

8.1.1. Основные определения

Пример приложения на языке С#, выводящего окно с кнопкой Ok. При нажатии на кнопку выводится окно сообщения.

using System;

using System.Drawing;

using System.ComponentModel; using System Windows.Forms;

Операционные системы

17

8.1.1. Основные определения

public class Form1: Form

{

private Button button1;

private Container components = null; public Form1()

{

button1 = new Button(); SuspendLayout();

// //button1

//

button1.Location = new Point (100,100); button1.TabIndex = 0;

button1.Name = "buttoni"; button1.Text = "buttoni";

button1.Click += new EventHandler ( button1_Click);

//

//Form1

AutoScaleBaseSize = new Size(5,13);

Операционные системы

18

 

8.1.1. Основные определения

 

ClientSize = new Size(292,262);

 

Controls.Add ( button1);

 

Name

= "Form1";

 

Text

= "Заголовок окна";

 

ResumeLayout (false);

 

}

 

 

protected override void Dispose( bool disposing )

 

{

 

 

if (disposing)

 

if (components != null)

 

components.Dispose();

 

base.Dispose( disposing );

 

}

 

 

static void Main()

 

{

 

 

Application.Run (new Formi ());

 

}

 

 

private void button1_Click (object sender, EventArgs e)

 

{

 

 

MessageBoxShow ("Нажата кнопка Ok");

19

8.1.1. Основные определения

Методы классов заменяют многие (но не все) функции API Win32. И таких методов предлагается еще больше, чем API-функций. Благодаря механизму перегрузки функций разработчики предлагают более простые и понятные методы.

Смысл перегрузки заключается в том, что в классе одновременно может существовать несколько методов с одним и тем же именем, но с параметрами, отличающимися по количеству и типам.

В функции API все параметры приходится задавать сразу, причем смысл отдельных из них непонятен, а другие в конкретных случаях просто не нужны.

Разработчики API для таких случаев изобретают дополнительные функции с новыми именами и параметрами, однако количество функций API Win32 и так уже перевалило за 2 тысячи.

20

Соседние файлы в папке ОС