LU-LSP-b11:L12

From DiLab
Revision as of 14:11, 6 December 2011 by Atis (talk | contribs) (New page: == 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: noprogr...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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.