Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > взаимодействие программ


Автор: DubAlex 2.5.2006, 09:33
Есть две программы: P1 и P2. P1 выполняет какие-то действия и результат записывает в файл F1. P2 через некоторые интервалы времени читает из файла F1 записанное ранее значение и выводит его на экран.
Можно ли обойтись без файла, т.е. в идеале программа P1 передает результат программе P2 и та сразу выводит этот результат на экран? 

Автор: SergeCpp 2.5.2006, 10:55
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ipc/base/mailslots.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ipc/base/named_pipes.asp  

Автор: cozzzy 2.5.2006, 12:41
А также Shared Memory, Memory Mapped File, Sockets и т.д. 

Автор: DubAlex 6.5.2006, 13:06
Я использую 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? 

Автор: cozzzy 6.5.2006, 14:52
MSDN:

Цитата

If no instances of the specified named pipe exist, the WaitNamedPipe function returns immediately, regardless of the time-out value.
 

Автор: DeadSoul 6.5.2006, 22:41
WM_COPYDATA 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)