Extras din laborator
Programul apelat primeste ca argumente un nume de fisier si un sir de caractere
si scrie in fisier sirul oglindit. Programul apelant citeste niste siruri de
caractere si concateneaza oglindirile lor.
ASPECTE TEORETICE:
Aceasta prblema contine doua module: un modul fiu, programul apelat, si un modul
tata, programul apelant. Modulul fiu preia argumentele date, pune in fisier sirul
oglindit, iar tatal preia din fisier rezultatul depus de fiu si concateneaza mai
multe siruri date.
Fiul este creat cu fork, iar primul modul este apelat de modulul tata, folosind
instructiunea execlp, care executa modulul fiu si obtine rezultat in modulul tata.
Modulul tata foloseste pentru fiecare actiune a sa modulul fiu, pentru fiecare
sir de caractere citit. Cu ajutorul instructiunii wait, tatal asteapta ca fiul sa
incheie actiunea anterioara pentru a putea merge mai departe cu executia.
PREZENTAREA SOLUTIEI:
Primul modul preia cei doi parametri dati, numele de fisier si sirul de caractere
si scrie in fisier oglinditul sirului. Fisierul este deschis doar pentru scriere, iar
sirul oglindit se obtine prin interschimbarea literelor din cuvant.
rezultatul este depus in fisier, acesta este ulterior inchis si acest modul se incheie.
Cel de-al doilea modul incepe prin a citi mai multe siruri de caractere, care sunt
memorate intr-un sir de siruri de caractere (s).
rez este variabila rezultat, unde este depus sirul concatenarilor cerute.
Pentru fiecare din acest sir se executa programul fiu (in fiu), utilizand ca test instructiunea
fork(), iar pentru executie execlp(...). Parametrii acestei ultime instructiuni sunt
numele primului modul si parametrii necesari, in acest caz numele fisierului si sirul
de caractere (care este preluat rand pe rand din matricea data mai devreme).
In tata, se asteapta dupa fiu, pentru a putea prelua din fisier datele dorite, dupa
care se efectueaza cncatenarea tuturor rezultatelor obtinute.
Rezultatul final este tiparit.
INSTRUCTIUNI DE RULARE:
Prima data se ruleaza programul fiu, iar apoi tatal. Se scrie la linia de comanda
gcc m1.c -o m1.out, creandu-se astfel m1.out si nu a.out, iar apoi pentru a testa
si rula acest modul se poate scrie ./m1.out fis.txt mama, obtinand in fisierul
fis.txt oglinditul sirului, adica amam.
Se compileaza si cel de-al doilea modul, adica se scrie gcc m2.c -o m2.out, iar
apoi pentru a-l rula, se scrie ./m2.out.
Conținut arhivă zip
- m1.c
- m2.c
- readme.txt