Difference between revisions of "LU-LSP-b13:L05"
|  (New page: ===Praktiskais darbs #5===  Realizēt programmu, kas beidz darbību, notiekot taimera signālam.  Izmantojamās funkcijas: * setjmp * longjmp * sigaction  Koda šablons:  <pre> #include <s...) |  (→Praktiskais darbs #5) | ||
| (8 intermediate revisions by 3 users not shown) | |||
| Line 2: | Line 2: | ||
| Realizēt programmu, kas beidz darbību, notiekot taimera signālam. | Realizēt programmu, kas beidz darbību, notiekot taimera signālam. | ||
| Darbības beigšanu realizēt caur <code>longjmp</code> uz <code>main()</code> funkciju, no kuras tad notiek <code>return 0;</code>. | |||
| Izmantojamās funkcijas: | Izmantojamās funkcijas: | ||
| * setjmp | * setjmp() | ||
| * longjmp | * longjmp() | ||
| * sigaction() [http://www.gnu.org/software/libc/manual/html_node/Sigaction-Function-Example.html (piemērs)] | |||
| * sigaction | |||
| Par signāliem kārtīgi mācīsimies vēlāk! Neliels ieskats, kas var noderēt: [https://www.gnu.org/software/libc/manual/html_node/Handler-Returns.html#Handler-Returns] | |||
| Uzmanību, konkrētais praktiskais darbs nestrādās ar striktu c90/c99 standartu, jo tam nepieciešami POSIX signāli, kas standartā nav iekļauti. Šajā PD atļauts kompilēt ar jaunāko standartu, vai korektāk - izmantot kompilatora slēdzi "-D_POSIX_C_SOURCE" | |||
| Koda šablons: | Koda šablons: | ||
| Line 14: | Line 20: | ||
| #include <signal.h> | #include <signal.h> | ||
| #include <stdio.h> | #include <stdio.h> | ||
| #include <unistd.h> | |||
| // TODO: jūsu kods te! | // TODO: jūsu kods te! | ||
| Line 22: | Line 29: | ||
|     //  |     // tālāko kodu nemainīt! | ||
|     // taimeris uz 3 sekundeem |     // taimeris uz 3 sekundeem | ||
|     alarm(3); |     alarm(3); | ||
|     //  |     // bezgalīgs cikls | ||
|     while (1); |     while (1); | ||
|     //  |     // atgriež kaut kādu nenulles kodu, lai kompilators nesūdzētos | ||
|     return -1; |     return -1; | ||
| } | } | ||
| Line 36: | Line 43: | ||
| Risinājumus iesūtīt estudijas.lu.lv, sadaļā PD5 | |||
| Iesniedzamais fails jānosauc šādi: LSP_PD5_vards_uzvards.c. Tas nav jāarhivē. | |||
Latest revision as of 12:23, 3 April 2024
Praktiskais darbs #5
Realizēt programmu, kas beidz darbību, notiekot taimera signālam.
Darbības beigšanu realizēt caur longjmp uz main() funkciju, no kuras tad notiek return 0;.
Izmantojamās funkcijas:
- setjmp()
- longjmp()
- sigaction() (piemērs)
Par signāliem kārtīgi mācīsimies vēlāk! Neliels ieskats, kas var noderēt: [1]
Uzmanību, konkrētais praktiskais darbs nestrādās ar striktu c90/c99 standartu, jo tam nepieciešami POSIX signāli, kas standartā nav iekļauti. Šajā PD atļauts kompilēt ar jaunāko standartu, vai korektāk - izmantot kompilatora slēdzi "-D_POSIX_C_SOURCE"
Koda šablons:
#include <setjmp.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
// TODO: jūsu kods te!
int main(void)
{
    // TODO: jūsu kods te!
    // tālāko kodu nemainīt!
    // taimeris uz 3 sekundeem
    alarm(3);
    // bezgalīgs cikls
    while (1);
    // atgriež kaut kādu nenulles kodu, lai kompilators nesūdzētos
    return -1;
}
Risinājumus iesūtīt estudijas.lu.lv, sadaļā PD5
Iesniedzamais fails jānosauc šādi: LSP_PD5_vards_uzvards.c. Tas nav jāarhivē.
