Локальные сети персональных компьютеров. Работа с сервером Novell NetWare

       

Программа FLOCK


Приведем пример программы FLOCK (листинг 21), выполняющей блокирование файлов средствами сетевой оболочки.

Вначале программа в цикле запрашивает пути к блокируемым файлам до тех пор, пока оператор вместо имени файла не введет символ "-". Каждый введенный файл добавляется в группу при помощи функции LogFile().

Затем вся группа блокируется функцией LockFileSet().

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

После того как вы нажмете на любую клавишу, программа разблокирует группу файлов при помощи функции ReleaseFileSet() и удалит саму группу, вызывая функцию ClearFileSet(). Файлы, разумеется, не удаляются с диска, удаляется только группа путей к файлам, которая использовалась для блокирования.

// =================================================== // Листинг 21. Блокирование файлов // Файл flock\flock.cpp // // (C) A. Frolov, 1993 // ===================================================

#include <stdlib.h> #include <stdio.h> #include <string.h> #include <conio.h>

#define BYTE unsigned char #define WORD unsigned int

extern "C" int GetNetWareShellVersion(char *,char *, char *); extern "C" int LogFile(char *, BYTE, WORD); extern "C" int LockFileSet(WORD); extern "C" void ReleaseFileSet(void); extern "C" void ClearFileSet(void);

void main(void) {

char MajorVersion=0; char MinorVersion=0; char Revision=0;

char FilePath[255];

int ccode;



printf("\n*FLOCK* (C) Frolov A., 1993\n");

// Проверяем наличие сетевой оболочки

asm push si GetNetWareShellVersion(&MajorVersion, &MinorVersion, &Revision); asm pop si

if(MajorVersion == 0) { printf("\nОболочка NetWare не загружена\n"); return; }

// Создаем набор файлов, которые будут заблокированы

for(;;) { printf("\nВведите путь к файлу или '-':"); gets(FilePath);

strupr(FilePath); if(FilePath[0] == '-') break;

// Добавляем файл в набор

ccode = LogFile(FilePath, 0, 0);

if(!ccode) printf("Файл %s добавлен к списку\n", FilePath); else printf("Ошибка при добавлении %02.2X\n", ccode); }

// Блокируем набор файлов

ccode = LockFileSet(0);

if(!ccode) printf("Файлы заблокированы\n"); else printf("Ошибка при блокировании " "файлов %02.2X\n", ccode);

printf("Для разблокирования файлов нажмите любую клавишу\n"); getch();

// Разблокируем набор файлов

ReleaseFileSet();

// Удаляем набор файлов

ClearFileSet(); }



Содержание раздела