Программирование для Windows NT (том 2)



         

Приложение PIPEС


Исходные тексты клиентского приложения PIPEC, предназначенного для совместной работы с приложением PIPES, представлены в листинге 2.12.

Листинг 2.12. Файл pipe/pipeс/pipeс.c

// ==================================================

// Приложение PIPEC (клиент для приложения PIPES)

// Демонстрация использования каналов Pipe

// для передачи данных между процессами

//

// (С) Фролов А.В., 1996

// Email: frolov@glas.apc.org

// ==================================================

#include <windows.h>

#include <stdio.h>

#include <conio.h>

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

{

  // Идентификатор канала Pipe

  HANDLE hNamedPipe;

  // Количество байт, переданных через канал

  DWORD  cbWritten;

  // Количество байт, принятых через канал

  DWORD  cbRead;

  // Буфер для передачи данных

  char   szBuf[256];

  // Буфер для имени канала Pipe

  char   szPipeName[256];

  printf("Named pipe client demo\n"

    "(C) A. Frolov, 1996, Email: frolov@glas.apc.org\n\n");

  printf("Syntax: pipec [servername]\n");

  // Если при запуске PIPEC было указано имя срвера,

  // указываем его в имени канала Pipe

  if(argc > 1)

    sprintf(szPipeName, "\\\\%s\\pipe\\$MyPipe$",

      argv[1]);

 

  // Если имя сервера задано не было, создаем канал

  // с локальным процессом

  else

    strcpy(szPipeName, "\\\\.\\pipe\\$MyPipe$");

  // Создаем канал с процессом PIPES

  hNamedPipe = CreateFile(

    szPipeName, GENERIC_READ | GENERIC_WRITE,

    0, NULL, OPEN_EXISTING, 0, NULL);

   

  // Если возникла ошибка, выводим ее код и

  // завершаем работу приложения

  if(hNamedPipe == INVALID_HANDLE_VALUE)

  {

    fprintf(stdout,"CreateFile: Error %ld\n",

      GetLastError());

    getch();

    return 0;

  }

  // Выводим сообщение о создании канала

  fprintf(stdout,"\nConnected. Type 'exit' to terminate\n");




Содержание  Назад  Вперед