11. praktikum - Longjump ja mmap: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Resümee puudub
Resümee puudub
 
4. rida: 4. rida:
== Long jump ==
== Long jump ==


* Kirjutage eelneva kogemuse (signaalide praktikum) baasil programm, mis on kinni lõputus tsüklis, kuni keegi vajutab CTRL+C (ehk saadab SIGINT signaali), mille peale trükkige "Exiting" ning väljuge.
See labor toetub teie eelnevale kogemusele signaalidega (vt vastav praktikum.  
* Täiendage programmi funktsioonidega setjmp() ja longjmp() nii, et teie programm:
* Kirjutage funktsioonidega setjmp() ja longjmp() programm nii, et teie programm:
** Küsiks kasutajalt fgets() funktsiooniga oma nime.
** Küsiks kasutajalt fgets() funktsiooniga oma nime.
** Kui kasutaja seda 10 sekundi jooksul ei sisesta, valib vaikimisi sõna "Anonymous".
** Kui kasutaja seda 10 sekundi jooksul ei sisesta, valib vaikimisi sõna "Anonymous".

Viimane redaktsioon: 29. november 2012, kell 17:47

Süsteemprogrammeerimine keeles C

Praktikumid

Laborid

Proovime longjmp() ja mmap() funktsioone.

Long jump

See labor toetub teie eelnevale kogemusele signaalidega (vt vastav praktikum.

  • Kirjutage funktsioonidega setjmp() ja longjmp() programm nii, et teie programm:
    • Küsiks kasutajalt fgets() funktsiooniga oma nime.
    • Kui kasutaja seda 10 sekundi jooksul ei sisesta, valib vaikimisi sõna "Anonymous".
    • Kui kasutaja vajutab CTRL+C, tühistatakse alarm() ja küsitakse kasutajalt "Are you sure you want to stay Anonymous? [y/N]"
      • Jah puhul valitakse nimeks Anonymous
      • "Ei" puhul jätkab nime ootamist ja nullib taimeri.
    • (Näidake nimi ekraanile ka)

Mmap

  • Kirjutage kettale fail mmaptest, millesse kirjutage mingid andmed, näiteks "Hello, World!"
  • Korjake see fail mmap() funktsiooni abil mällu sellisel moel, et kui seda muudate, näiteks "Hello, mmap()", jõuab see muudatus ka faili tagasi.