11. praktikum - signaalid ja longjmp(itv0020): erinevus redaktsioonide vahel
Mine navigeerimisribale
Mine otsikasti
Resümee puudub |
Resümee puudub |
||
| 15. rida: | 15. rida: | ||
* 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 " | ** 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
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.