28.01.2013 Views

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

SHOW MORE
SHOW LESS

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"

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!