Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / взаимодействие двух программ / 10 сообщений из 10, страница 1 из 1
02.05.2006, 10:35
    #33700993
DubAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
взаимодействие двух программ
Есть две программы: P1 и P2. P1 выполняет какие-то действия и результат записывает в файл F1. P2 через некоторые интервалы времени читает из файла F1 записанное ранее значение и выводит его на экран.
Можно ли обойтись без файла, т.е. в идеале программа P1 передает результат программе P2 и та сразу выводит этот результат на экран?
...
Рейтинг: 0 / 0
02.05.2006, 10:40
    #33701000
Nahel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
взаимодействие двух программ
Использовать БД
...
Рейтинг: 0 / 0
02.05.2006, 11:39
    #33701192
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
взаимодействие двух программ
named pipes
...
Рейтинг: 0 / 0
02.05.2006, 11:40
    #33701198
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
взаимодействие двух программ
DDE, OLE и т.д.
...
Рейтинг: 0 / 0
02.05.2006, 11:54
    #33701253
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
взаимодействие двух программ
может LDAP?
...
Рейтинг: 0 / 0
02.05.2006, 12:20
    #33701338
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
взаимодействие двух программ
Если окружение - Win32 , то можно использовать named pipes, mailslots, если окружение любое, можно использовать TCP sockets например.
...
Рейтинг: 0 / 0
02.05.2006, 14:39
    #33701835
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
взаимодействие двух программ
DubAlexЕсть две программы: P1 и P2. P1 выполняет какие-то действия и результат записывает в файл F1. P2 через некоторые интервалы времени читает из файла F1 записанное ранее значение и выводит его на экран.
Можно ли обойтись без файла, т.е. в идеале программа P1 передает результат программе P2 и та сразу выводит этот результат на экран?

Если речь идёт про Win32, то рекомендую прочитать Рихтера
"Windows для проффесионалов."


с уважением
(круглый)
...
Рейтинг: 0 / 0
02.05.2006, 18:36
    #33702506
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
взаимодействие двух программ
kolobok0 k> Если речь идёт про Win32, то рекомендую прочитать Рихтера
k> "Windows для проффесионалов."... ссылку на которую кстати, не так давно в дельфийном форуме озвучили
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
06.05.2006, 14:10
    #33713119
DubAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
взаимодействие двух программ
Есть 2 программы между которыми нужно организовать взаимодействие. Я использую Pipes. Появилась трудность.
Есть следующий код для клиента:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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); 
Насколько я понял, строка:
Код: plaintext
1.
WaitNamedPipe(lpszPipename, NMPWAIT_WAIT_FOREVER); 
заставляет клиента ждать пока сервер не создаст Pipe с таким именем. Но клиент не ждет а выполняет следующие операции и из-за этого возникают глюки (и переменная hPipe =INVALID_HANDLE_VALUE и res = 0 и т.д.). Как это исправить? Или я плохо разобрался с принципом работы Pipes?
...
Рейтинг: 0 / 0
06.05.2006, 15:43
    #33713429
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
взаимодействие двух программ
в msdn написано так:
Код: plaintext
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.
   while ( 1 ) 
   { 
      hPipe = CreateFile( 
         lpszPipename,   // pipe name 
         GENERIC_READ |  // read and write access 
         GENERIC_WRITE, 
          0 ,              // no sharing 
         NULL,           // default security attributes
         OPEN_EXISTING,  // opens existing pipe 
          0 ,              // default attributes 
         NULL);          // no template file 
 
   // Break if the pipe handle is valid. 
 
      if (hPipe != INVALID_HANDLE_VALUE) 
         break; 
 
      // Exit if an error other than ERROR_PIPE_BUSY occurs. 
 
      if (GetLastError() != ERROR_PIPE_BUSY) 
      {
         printf("Could not open pipe"); 
         return  0 ;
      }
 
      // All pipe instances are busy, so wait for 20 seconds. 
 
      if (!WaitNamedPipe(lpszPipename,  20000 )) 
      { 
         printf("Could not open pipe"); 
         return  0 ;
      } 
   }
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / взаимодействие двух программ / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]