11. praktikum - signaalid ja longjmp(itv0020): erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Resümee puudub
Resümee puudub
 
(ei näidata sama kasutaja üht vahepealset redaktsiooni)
11. rida: 11. rida:
* Proovige funktsiooni alarm() kasutamist signaali SIGALRM saatmiseks.
* Proovige funktsiooni alarm() kasutamist signaali SIGALRM saatmiseks.


* Kirjutage eelneva kogemuse baasil programm, mis on kinni lõputus tsüklis, kuni keegi vajutab CTRL+C (ehk saadab SIGINT signaali), mille peale trükkige "Väljun" ning väljuge.
 
* Kirjutage eelneva kogemuse 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.
* Täiendage programmi funktsioonidega setjmp() ja longjmp() nii, et teie programm:
* Täiendage programmi funktsioonidega setjmp() ja longjmp() 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 "Anonumous".
** 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]"
** 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
*** Jah puhul valitakse nimeks Anonymous
*** "Ei" puhul jätkab nime ootamist ja nullib taimeri.
*** "Ei" puhul jätkab nime ootamist ja nullib taimeri.

Viimane redaktsioon: 16. november 2010, kell 19:15

Süsteemprogrammeerimine keeles C

Praktikumid

Laborid

See praktikum harjutab signaalide ja setjmp/longjmp koostoime katsetamist


Ülesanne

  • Kirjutage programm, mis kasutab funktsiooni raise(), et saata endale mingi signaal (näiteks SIGINT). Mis juhtub?
  • Täiendage programmi funktsiooniga signal(), et saadetavat signaali ignoreerida. Katsetage.
  • Täiendage funktsiooni signal() nii, et saadetav signaal püütakse kinni ja käivitatakse signaali puhul mingi funktsioon.
  • Proovige funktsiooni alarm() kasutamist signaali SIGALRM saatmiseks.


  • Kirjutage eelneva kogemuse 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.
  • Täiendage programmi funktsioonidega setjmp() ja longjmp() 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.