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

From DiLab
Jump to: navigation, search
Line 1: Line 1:
Ievads sistēmprogrammēšanā un UNIX operētājsistēmā.
Ievads sistēmprogrammēšanā un UNIX operētājsistēmā.
C programmu un shell-script savstarpēja sadarbība.
C programmu un shell skriptu savstarpēja sadarbība.
<!-- [[http://jupiter.cs.fmf.lu.lv/~kursi/lu-lsp-b11-01.pdf Lekcijas slaidi]] -->
<!-- [[http://jupiter.cs.fmf.lu.lv/~kursi/lu-lsp-b11-01.pdf Lekcijas slaidi]] -->
== LKP PD1 ==
== LKP PD1 ==
Line 53: Line 53:
Viela pārdomām:
Viela pārdomām:
* Kā ir ar drošību? vai lietotājs nevar ievadīt potenciāli bīstamas simbolu virknes?
* Kā ir ar drošību? vai lietotājs nevar ievadīt potenciāli bīstamas simbolu virknes?
* Vai risinājums izdrukas visu tekstu vai tikai vienu vārdu? Kā to labot?
* Vai risinājums izdrukās visu tekstu vai tikai vienu vārdu? Kā to labot?

Revision as of 20:34, 7 September 2011

Ievads sistēmprogrammēšanā un UNIX operētājsistēmā. C programmu un shell skriptu savstarpēja sadarbība.

LKP PD1

Uzrakstīt sekojošas programmas:

  1. (C valodā) Ielasa lietotāja tekstu un padod zemāk.
  2. (shell script) Saņem padoto tekstu, izdrukā datumu un padod tekstu nakamajai programmai
  3. (C valodā) izdrukā saņemto tekstu

1. un 3. drīkst apvienot!

Noformēt uzdevumu kā:

  • myprint{1,3}.c - C izejas koda faili
  • myprint{1,3} - izpildāmais fails (sakompilēts no C koda)
  • script - bash skripta fails
  • Makefile - testēšanas makefile, ar mērķiem:
    • all - kompilēt C kodu
    • clean - nodzēst izpildāmo(s) failu(s)
    • test - notestēt visu

PD klasē, piemēra iespējamais risinājums. 1. un 3. programmu apvienojums

#include <stdio.h>

int main (int argc, char *argv[])
{
	char str[255];

	if( argc>1 )
	{
		puts(argv[1]);
	}
	else
	{
		scanf("%s", str);
		puts(str);
	}
	return 0;
}

Shell skripts:

#!/bin/sh
while read LINE; do
date
./myprint ${LINE}
done

Programmu izsaukums: ./myprint | ./script

Viela pārdomām:

  • Kā ir ar drošību? vai lietotājs nevar ievadīt potenciāli bīstamas simbolu virknes?
  • Vai risinājums izdrukās visu tekstu vai tikai vienu vārdu? Kā to labot?