1. Procese Windows; comunicaţii prin pipe şi IPC 2
1. Procese Windows; comunicaţii prin pipe şi IPC 2
1. Procese Windows; comunicaţii prin pipe şi IPC 2
- TAGS
- procese
- pipe
- www.cs.ubbcluj.ro
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
}<br />
<strong>Procese</strong> <strong>Windows</strong>; <strong>comunicaţii</strong> <strong>prin</strong> <strong>pipe</strong> <strong>şi</strong> <strong>IPC</strong> - 19 -<br />
Mesaj *pm, mesaj;<br />
char *pc,linie[MAXL];<br />
int i;<br />
for ( ; ; ) {<br />
<strong>prin</strong>tf("Dati: numar|sufix: ");<br />
pc = (char*)fgets(linie, MAXL, stdin);<br />
if (pc == NULL) break;<br />
linie[strlen(linie)-1] = '\0';<br />
pc = strstr(linie, "|");<br />
if (pc == NULL) continue;<br />
mesaj.i = atoi(linie);<br />
strcpy(mesaj.s, pc+1);<br />
mesaj.lung = PLUS + strlen(mesaj.s) + 1;<br />
}<br />
WriteMes(out, &mesaj);<br />
pm = ReadMes(in);<br />
pc = pm->s;<br />
<strong>prin</strong>tf("%d\n",pm->lung);<br />
for (i = PLUS; i < pm->lung; ) {<br />
<strong>prin</strong>tf("%d %s\n", i, pc);<br />
i += strlen(pc) + 1;<br />
pc += strlen(pc) + 1;<br />
}<br />
In sfarsit, vom prezenta programele <strong>prin</strong>cipale.<br />
Sursa fifos.cpp prezinta programul <strong>prin</strong>cipal al serverului:<br />
#include <br />
#include <br />
#include "mesaj.h"<br />
#include "ReadWrite.cpp"<br />
#include "dir.cpp"<br />
#include "parinte.cpp"<br />
main() {<br />
HANDLE f1, f2;<br />
fclose(stdin);<br />
fclose(stdout);<br />
f1=CreateNamedPipe("\\\\.\\PIPE\\fifo1", PIPE_ACCESS_INBOUND,<br />
PIPE_TYPE_BYTE|PIPE_WAIT, 3, 0, 0, 0, NULL);<br />
f2=CreateNamedPipe("\\\\.\\PIPE\\fifo2", PIPE_ACCESS_OUTBOUND,<br />
PIPE_TYPE_BYTE|PIPE_WAIT, 3, 0, 0, 0, NULL);<br />
ConnectNamedPipe(f1, NULL);<br />
ConnectNamedPipe(f2, NULL);<br />
parinte(f1, f2);<br />
// Prin specificul problemei noastre cuncrete, nu se va ajunge la<br />
// instructiunile de mai jos. Le scriem totusi pentru exemplificare.<br />
DisconnectNamedPipe(f1);<br />
DisconnectNamedPipe(f2);<br />
CloseHandle(f1);<br />
CloseHandle(f2);<br />
}<br />
Sursa fifoc.cpp prezinta programul <strong>prin</strong>cipal al clientului:<br />
#include <br />
#include <br />
#include "mesaj.h"<br />
#include "ReadWrite.cpp"<br />
#include "dir.cpp"<br />
#include "fiu.cpp"