LU-LSP-b11:L12
PD#12: Procesi un starprocesu komunikācija
Uzdevums
Dota programma, kura saskaita divus skaitļus. Programma ielasa datus no stdin, izvada tos uz stdout. Uzdevums: noprogrammēt otru programmu, kas izmanoto šo pirmo saskaitīšanas funkcijas realizācijai. (Testa piemēriem nav obligāti jātiek ievadītiem no konsoles, tos var iekļaut otrās programmas C kodā.)
Pirmās programmas kods:
#include <stdio.h> int main(void) { int i1, i2, sum; fscanf(stdin, "%d %d", &i1, &i2); sum = i1 + i2; fprintf(stdout, "%d\n", sum); fflush(stdout); return 0; }
Doto kodu nevajag mainīt, izņemot, ja tas palīdz atkļūdošanas vajadzībām.
Padomi
- Izmantot funkcijas fork() un exec() dotās programmas palaišanai.
- Izmantot funkciju pipe() starpprocesu komunikācijai. (Cik reižu tā būs jāsauc?)
- Aizvērt ar close() tos ar pipe() iegūtos failu deskriptorus, kuri nav vajadzīgi, pirms pārējo izmantošanas.