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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

}<br />

<strong>Procese</strong> <strong>Windows</strong>; <strong>comunicaţii</strong> <strong>prin</strong> <strong>pipe</strong> <strong>şi</strong> <strong>IPC</strong> - 12 -<br />

BOOL b = CreateProcess("ceva", NULL, NULL, NULL,<br />

FALSE, 0, NULL, NULL, &si, &pi);<br />

else <strong>prin</strong>tf("Erori de compilare\n");<br />

Compilarea lui se face<br />

gcc -o comprun compilerun.cpp<br />

Executia se face, de exemplu, <strong>prin</strong><br />

comprun sursa.cpp<br />

Ca efect, daca compilarea sursei argument (sursa.cpp) este corecta, atunci compilatorul<br />

gcc creeaza fisierul ceva si intoarce cod de retur o, dupa ceva este lansat <strong>prin</strong><br />

CreateProcess. Daca esueaza compilarea, se va tipari doar mesajul.<br />

<strong>1.</strong>3.3.4. Exemplul 6: Prelucrarea simultana a mai multor fisiere text.<br />

Dorim sa transformam un fisier text intr-un alt fisier text, cu acelasi continut, dar in care toate<br />

cuvintele din el sa inceapa cu litera mare. Un astfel de program va fi apelat:<br />

capitalizare fisierintrare fisieriesire<br />

Ne propunem sa prelucram simultan mai multe astfel de fisiere. De aceea vom creea un<br />

proces master, care primeste la linia de comanda numele fisierelor al caror continut va fi<br />

capitalizat:<br />

master fisier1 fisier2 - - - fisiern<br />

Rezultatul va consta din fisierele:<br />

fisier<strong>1.</strong>CAPIT, fisier2.CAPIT, - - - fisiern.CAPIT<br />

Procesul master va crea n procese fii, iar fiecare fiu i va lansa <strong>prin</strong> CreateProcess<br />

programul:<br />

capitalizare fisi fisi.CAPIT<br />

Sursa capitalizare.cpp este:<br />

#include <br />

#include <br />

#include<br />

#define MAXLINIE 100<br />

main(int argc, char* argv[]) {<br />

FILE *fi, *fo;<br />

char linie[MAXLINIE], *p;<br />

fi = fopen(argv[1], "r");<br />

fo = fopen(argv[2], "w");<br />

if (fi == NULL && fo == NULL) ExitProcess(1);<br />

for ( ; ; ) {<br />

p = fgets(linie, MAXLINIE, fi);<br />

linie[MAXLINIE-1] = '\0';<br />

if (p == NULL) break;<br />

for (p = linie; ; ) {

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

Saved successfully!

Ooh no, something went wrong!