Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/35: Рейтинг темы: голосов - 35, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 42

Неименованные каналы

23.12.2012, 21:19. Показов 6857. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!
Подскажите, пожалуйста, как работать с неименованными каналами. Может есть какие-то примеры?
Как использовать неименованные каналы как средство межпроцессного взаимодействия?
Спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.12.2012, 21:19
Ответы с готовыми решениями:

Именованные каналы
я пишу распределенный архиватор с клиент-серверным интерфейсом, по заданию курсача сервер должен принимать путь к файлу и количество томов,...

Именованные каналы
у CreateNamePipe() есть параметр nMaxInstances. то есть "The maximum number of instances that can be created for this pipe". я...

Именованные каналы
Здравствуйте. Хотелось бы узнать одну вещь по поводу именованных каналов. Функция CreateNamedPipe() создает один экземпляр канала на...

1
840 / 347 / 67
Регистрация: 20.11.2012
Сообщений: 809
23.12.2012, 22:37
Лучший ответ Сообщение было отмечено как решение

Решение

Как использовать для межпроцессного взаимодействия? Ну так он для этого и создан... Пример с переоределением стандартного вывода для записи в канал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//сервер
#include <iostream>
#include <windows.h>
 
int main()
{
    //Хэндлы чтения и записи
    HANDLE hRead = INVALID_HANDLE_VALUE;
    HANDLE hWrite = INVALID_HANDLE_VALUE;
 
    SECURITY_ATTRIBUTES sa = {sizeof(sa)};
    sa.bInheritHandle = TRUE; //хэндлы наследуемые
    sa.lpSecurityDescriptor = NULL; 
 
    //создаем анонимный канал
    if(!CreatePipe(&hRead, &hWrite, &sa, 0))
    {
        std::cout<<"Error code: "<<GetLastError()<<std::endl;
        return -1;
    }
 
    //событие для информирования о доступности чтения
    HANDLE hEv = CreateEventA(0, TRUE, FALSE, "READEVENT");
 
    STARTUPINFOA si = {sizeof(si)};
 
    //передаем хэндлы в процесс-клиент
    si.hStdOutput = hWrite;
    si.hStdInput = hRead;
    si.hStdError = hWrite;
 
    //говорим о необходимости переопределения стандартных дескрипторов
    si.dwFlags = STARTF_USESTDHANDLES;
 
    PROCESS_INFORMATION pi = {0};
 
    //запускаем процесс-клиент
    if(!CreateProcessA(NULL, "client.exe", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi ))
    {
        std::cout<<"Error code: "<<GetLastError()<<std::endl;
        CloseHandle(hRead);
        CloseHandle(hWrite);
        CloseHandle(hEv);
        return -1;
    }
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
 
    //ждем пока клиент запишет данные
    WaitForSingleObject(hEv, INFINITE);
 
    DWORD readed = 0;
    BYTE buf[255] = {0};
 
    //читаем данные из канала и выводим их (в данном случае будет строка)
    if(ReadFile(hRead, buf, 255, &readed, NULL))
    {
        std::cout<<"Read from pipe:"<< (char*)buf<<std::endl;
    }
    
    CloseHandle(hRead);
    CloseHandle(hWrite);
    CloseHandle(hEv);
 
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//клиент
#include <iostream>
#include <windows.h>
 
int main()
{
 
    //"открываем" событие, созданное сервером
    HANDLE hEv = CreateEventA(0, TRUE, FALSE, "READEVENT");
 
    //пишем в канал (дескриптор вывода переопределен в коде создание процесса в сервере
    std::cout<<"Hi, i'm client\0";
 
    //информируем сервер о готовности данных для чтения
    SetEvent(hEv);
    
    CloseHandle(hEv);
 
    return 0;
}
exe клиента должен лежать рядом с exe сервера.
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.12.2012, 22:37
Помогаю со студенческими работами здесь

Многопоточность + Именованные каналы
Добрый день. На сайте MSDN по ссылке приводится пример работы многопоточного приложения использующего именованные каналы....

Анонимные каналы. Петля?
Привет всем. Есть задание: при помощи анонимных каналов наладить передачу данных между двумя процессами по схеме 1-&gt;2, 2-&gt;1. Есть у...

Анонимные именованные каналы
Подскажите, как изменить этот пример:...

Именованные каналы (PIPE) в сети
Создано два приложения: сервер, клиент. Сервер запускается в локальной сети на одном ПК, клиент в той же сети на другом ПК, соединение...

Именованные каналы (Named Pipes). Не компилируется код
Всем добрый день. Я новичок в C++ и WinAPI, больше работаю с Java. Сейчас возникла необходимость в именованных каналах. Изучив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru