Difference between revisions of "LU-LSP-b12:MD4"
(3 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
===Uzdevums=== |
===Uzdevums=== |
||
# Realizēt procedūru myExit(int ret_code), kas no jebkuras vietas kodā iziet no programmas ar kodu kurš padots kā parametrs (darbojas līdzīgi exit()). Darba izpildei nav atļauts izmantot exit(). Tā vietā jāizmanto setjmp() un longjmp(). Galvenajā funkcijā main() atļauts ievietot savu makro izsaukumu: |
# Realizēt procedūru myExit(int ret_code), kas no jebkuras vietas kodā iziet no programmas ar kodu kurš padots kā parametrs (darbojas līdzīgi exit()). Darba izpildei nav atļauts izmantot exit(). Tā vietā jāizmanto setjmp() un longjmp(). Galvenajā funkcijā main() atļauts ievietot savu makro izsaukumu: |
||
# Reaģēt uz signālu |
# Reaģēt uz signālu SIGHUP (''SIGnal Hung UP'') saskaņā ar sekojošu pseido-kodu: |
||
On SIG_HUP |
On SIG_HUP |
||
print "Bye bye!\n"; |
print "Bye bye!\n"; |
||
Line 21: | Line 21: | ||
Uzdevums tiks vērtēts sekojoši: |
Uzdevums tiks vērtēts sekojoši: |
||
# 70% - Korekta myExit() funkcionalitāte |
# 70% - Korekta myExit() funkcionalitāte |
||
# 30% - Reaģēšana uz |
# 30% - Reaģēšana uz SIGHUP signālu. |
||
===Piemēri=== |
===Piemēri=== |
||
main() |
int main() |
||
{ |
{ |
||
MY_INIT(); |
MY_INIT(); |
||
Line 42: | Line 42: | ||
* [http://linux.die.net/man/3/setjmp man 3 setjmp] |
* [http://linux.die.net/man/3/setjmp man 3 setjmp] |
||
* [http://linux.die.net/man/3/longjmp man 3 longjmp] |
* [http://linux.die.net/man/3/longjmp man 3 longjmp] |
||
* [http://linux.die.net/man/2/sigaction man 2 sigaction] |
|||
* Ieteikums: izstrādājiet programmatūru pakāpeniski. Piemēram, vispirms ielasiet un izdrukājiet datus. Tad pievienojiet datu analīzi un reģistrēšanu savās datu struktūrās. Tad pievienojiet datu analīzi lai tos sakārtotu izdrukai. Testējiet vispirms uz pareiziem datiem. tad uz kļūdainiem datiem. |
|||
==J&A (jautājumi un atbildes)== |
==J&A (jautājumi un atbildes)== |
Latest revision as of 16:50, 23 October 2012
Mērķi
- Apgūt setjmp() un longjmp() lietojumu un asinhronu koda vadību.
Uzdevums
- Realizēt procedūru myExit(int ret_code), kas no jebkuras vietas kodā iziet no programmas ar kodu kurš padots kā parametrs (darbojas līdzīgi exit()). Darba izpildei nav atļauts izmantot exit(). Tā vietā jāizmanto setjmp() un longjmp(). Galvenajā funkcijā main() atļauts ievietot savu makro izsaukumu:
- Reaģēt uz signālu SIGHUP (SIGnal Hung UP) saskaņā ar sekojošu pseido-kodu:
On SIG_HUP print "Bye bye!\n"; exit(1);
Jāiesniedz
- Jāiesniedz C programmas pirmkods.
- Koda fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" LSP MD4 vards uzvards
Vērtējums
Uzdevums tiks vērtēts sekojoši:
- 70% - Korekta myExit() funkcionalitāte
- 30% - Reaģēšana uz SIGHUP signālu.
Piemēri
int main() { MY_INIT(); ... } ... void a() { ... myExit(7); ... }
Derīga informācija
J&A (jautājumi un atbildes)
J: Uzdevums pārāk grūts, vai var pagarināt termiņu?
A: Noteiktais termiņš paliek spēkā. Iesaku risināt savlaicīgi, lai pietiek laika neparedzētu problēmu risināšanai.
Uz LSP kursa sākuma lapu.