Difference between revisions of "LU-LSP-b11:L12"

From DiLab
Jump to: navigation, search
(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...)
 
 
Line 28: Line 28:
* Izmantot funkciju ''pipe()'' starpprocesu komunikācijai. (Cik reižu tā būs jāsauc?)
* 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.
* Aizvērt ar ''close()'' tos ar ''pipe()'' iegūtos failu deskriptorus, kuri nav vajadzīgi, pirms pārējo izmantošanas.

=== Iesūtīšana ===

Iesūtīt otrās programmas C kodu uz kursa asistenta e-pastu. Subject un faila nosaukums parastais.

Latest revision as of 14:13, 6 December 2011

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.

Iesūtīšana

Iesūtīt otrās programmas C kodu uz kursa asistenta e-pastu. Subject un faila nosaukums parastais.