LU-LSP-b13:L02

From DiLab
Revision as of 15:49, 24 September 2013 by Atis (talk | contribs)
Jump to: navigation, search

Praktiskais darbs #2

Realizēt efektīvu failu kopēšanas programmu.

  • Brīva izvēle, kādas funkcijas vai sistēmas izsaukumus lietot
  • Ja lieto C bibliotēkas iebūvēto buferēšanu, bufera izmērs jāuzstāda atšķirīgs no noklusētā!

Programma pieņem divus argumentus: ieejas un izejas failu vārdi

Ja izejas fails eksistē, tad jāuzprasa apstiprinājums, - vai tiešām to pārrakstīt?

Veiksmīgas, pilnas faila nokopēšanas gadījumā programmai jābeidzas ar izejas kodu 0, pretējā gadījumā ar: kodu -1, piemēram, ja ieejas fails nav atrasts, lasīšana neizdevās, izejas failu nevar izveidot vai nevar atvērt rakstīšanas režīmā, rakstīšana tajā neizdevās u.c. problēmas.

Viens no efektivitātes priekšnosacījumiem: optimāls (vai nosacīti tuvu optimālajam) bufera izmērs. Tomēr vērtējumu izliekot efektivitāte tiks pārbaudīta empīriski: izmērot, cik daudz laika vajadzīgs liela faila nokopēšanai.

60% par korektumu, 40% par ātrdarbību (vērtē tikai tad, ja ir korekta).


Jāiesniedz:

  • C programmas pirmkods.
  • Fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" LSP PD2 vards uzvards
  • Iesūtīt uz adresi Atis-email.gif līdz nodarbības beigām


Makefile piemērs šim PD:

all:
	gcc main.c -o pd2

test:
	./pd2 test.in test.out

gentest:
	dd if=/dev/urandom of=test.in count=2048
	dd if=/dev/urandom of=test-big.in count=204800

clean:
	rm -f pd2 test.out