Поиск:

Ответ в темуСоздание новой темы Создание опроса
> взаимодействие программ, передача параметров 
V
    Опции темы
DubAlex
Дата 2.5.2006, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 10.2.2006

Репутация: нет
Всего: нет



Есть две программы: P1 и P2. P1 выполняет какие-то действия и результат записывает в файл F1. P2 через некоторые интервалы времени читает из файла F1 записанное ранее значение и выводит его на экран.
Можно ли обойтись без файла, т.е. в идеале программа P1 передает результат программе P2 и та сразу выводит этот результат на экран? 
PM MAIL   Вверх
SergeCpp
Дата 2.5.2006, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 5
Всего: 124



Mailslots
Named Pipes  

Это сообщение отредактировал(а) SergeCpp - 2.5.2006, 10:57
PM MAIL WWW ICQ   Вверх
cozzzy
Дата 2.5.2006, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.4.2006
Где: Харьков

Репутация: нет
Всего: нет



А также Shared Memory, Memory Mapped File, Sockets и т.д. 
PM MAIL   Вверх
DubAlex
Дата 6.5.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 10.2.2006

Репутация: нет
Всего: нет



Я использую Pipes. Появилась трудность.
Есть следующий код для клиента: 
Код

LPTSTR lpszPipename = "\\\\.\\pipe\\kolTelN"; 
HANDLE hPipe; 
WaitNamedPipe(lpszPipename, NMPWAIT_WAIT_FOREVER); 
hPipe = CreateFile(lpszPipename,                GENERIC_READ | GENERIC_WRITE,          FILE_SHARE_READ | FILE_SHARE_WRITE,         NULL, OPEN_EXISTING, 0, NULL ); 
if (hPipe == INVALID_HANDLE_VALUE) 
   MessageBox(0, "Invalid handle value1", NULL, MB_OK); 
DWORD bytesWrt; 
unsigned char kolTelN=i+1; 
int res = WriteFile( hPipe, &kolTelN, 1, &bytesWrt, NULL ); 
if(!res) 
   MessageBox(0, "Can't write to file", NULL, MB_OK); 
CloseHandle(hPipe); 

Насколько я понял, строка: 
Код
WaitNamedPipe(lpszPipename, NMPWAIT_WAIT_FOREVER); 

заставляет клиента ждать пока сервер не создаст Pipe с таким именем. Но клиент не ждет а выполняет следующие операции и из-за этого возникают глюки (и переменная hPipe =INVALID_HANDLE_VALUE и res = 0 и т.д.). Как это исправить? Или я плохо разобрался с принципом работы Pipes? 
PM MAIL   Вверх
cozzzy
Дата 6.5.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.4.2006
Где: Харьков

Репутация: нет
Всего: нет



MSDN:

Цитата

If no instances of the specified named pipe exist, the WaitNamedPipe function returns immediately, regardless of the time-out value.
 
PM MAIL   Вверх
DeadSoul
Дата 6.5.2006, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



WM_COPYDATA 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.