Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Silenoz Forumaš(ica)
Pridružen/a: 15. 10. 2011. (18:45:11) Postovi: (4F)16
Spol:
|
Postano: 0:46 čet, 4. 12. 2014 Naslov: C - dojava greški |
|
|
Ima netko da ozbiljnije radi u C-u i da zna zašto se i kada koristi koja kombinacija dojave greškama pri prekidu programa zbog greške?
Sada smo na mrežama raditi masu novih načina obavjesti o grešci (perror(), herror(),..) i zanima me kada se koja verzija koristi i zašto točno baš ta?
Osim navedenih u zagradama, ostale kombinacije koje sam sustretao su:
-printf("..") i exit (neki broj)
-printf i return x, x!=0
-stdout (stderr, "..")
Do sada sam u C radio sa printf i exit(negativan_broj) i shvaćam da obavještava sustav da se dogodila greška (makar, još nisam vidio poslijedice korištenja toga ili običnog returna sa 0 ili bilo kojim drugim brojem), a na ovo ostalo sam gledao samo kao na varijaciju na temu. Trenutno pokušavam shvatiti preciznije pa me jako buni sve skupa.
Ima netko da ozbiljnije radi u C-u i da zna zašto se i kada koristi koja kombinacija dojave greškama pri prekidu programa zbog greške?
Sada smo na mrežama raditi masu novih načina obavjesti o grešci (perror(), herror(),..) i zanima me kada se koja verzija koristi i zašto točno baš ta?
Osim navedenih u zagradama, ostale kombinacije koje sam sustretao su:
-printf("..") i exit (neki broj)
-printf i return x, x!=0
-stdout (stderr, "..")
Do sada sam u C radio sa printf i exit(negativan_broj) i shvaćam da obavještava sustav da se dogodila greška (makar, još nisam vidio poslijedice korištenja toga ili običnog returna sa 0 ili bilo kojim drugim brojem), a na ovo ostalo sam gledao samo kao na varijaciju na temu. Trenutno pokušavam shvatiti preciznije pa me jako buni sve skupa.
|
|
[Vrh] |
|
fireball Forumaš(ica)
Pridružen/a: 07. 10. 2005. (18:49:17) Postovi: (4AB)16
Spol:
Lokacija: s rukom u vatri i nogom u grobu
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 5:08 čet, 4. 12. 2014 Naslov: Re: C - dojava greški |
|
|
[quote="Silenoz"]Do sada sam u C radio sa printf i exit(negativan_broj) i shvaćam da obavještava sustav da se dogodila greška (makar, još nisam vidio poslijedice korištenja toga ili običnog returna sa 0 ili bilo kojim drugim brojem), a na ovo ostalo sam gledao samo kao na varijaciju na temu.[/quote]
[tt]exit(broj)[/tt] i [tt]main[/tt]-ov [tt]return broj[/tt] su ista stvar, osim sto [tt]exit(broj)[/tt] mozes staviti i u druge funkcije.
Za "posljedicu" broja pokreni ovaj program u konzoli na Linuxu:
[code:1]#include <stdio.h>
#include <stdlib.h>
int main(void) {
int e;
scanf("%d", &e);
exit(e);
}[/code:1]
Odmah iduca naredba (i dalje u konzoli) neka ti bude
[code:1]echo $?[/code:1]
To bi ti trebalo ispisati broj koji si unio programu:
[code:1]$ ./a.out
17
$ echo $?
17
$ ./a.out
19
$ echo $?
19[/code:1]
Prakticna svrha: zamisli da neki drugi program poziva ovaj tvoj. Tada taj moze, kroz tu povratnu vrijednost, dobiti informaciju o tome kako je i zasto program zavrsio (naravno, pod uvjetom da tvoj program vraca razne kodove za razne stvari i da autor programa koji poziva ovo tvoje zna koji su kodovi i koje je njihovo znacenje).
Npr. ovo ce se vrtiti dok ne upises 17 (ili ubijes nasilno):
[code:1]$ ./a.out; while [ $? != 17 ] ; do echo "Ajmo opet"; ./a.out ; done[/code:1]
Silenoz (napisa): | Do sada sam u C radio sa printf i exit(negativan_broj) i shvaćam da obavještava sustav da se dogodila greška (makar, još nisam vidio poslijedice korištenja toga ili običnog returna sa 0 ili bilo kojim drugim brojem), a na ovo ostalo sam gledao samo kao na varijaciju na temu. |
exit(broj) i main-ov return broj su ista stvar, osim sto exit(broj) mozes staviti i u druge funkcije.
Za "posljedicu" broja pokreni ovaj program u konzoli na Linuxu:
Kod: | #include <stdio.h>
#include <stdlib.h>
int main(void) {
int e;
scanf("%d", &e);
exit(e);
} |
Odmah iduca naredba (i dalje u konzoli) neka ti bude
To bi ti trebalo ispisati broj koji si unio programu:
Kod: | $ ./a.out
17
$ echo $?
17
$ ./a.out
19
$ echo $?
19 |
Prakticna svrha: zamisli da neki drugi program poziva ovaj tvoj. Tada taj moze, kroz tu povratnu vrijednost, dobiti informaciju o tome kako je i zasto program zavrsio (naravno, pod uvjetom da tvoj program vraca razne kodove za razne stvari i da autor programa koji poziva ovo tvoje zna koji su kodovi i koje je njihovo znacenje).
Npr. ovo ce se vrtiti dok ne upises 17 (ili ubijes nasilno):
Kod: | $ ./a.out; while [ $? != 17 ] ; do echo "Ajmo opet"; ./a.out ; done |
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
|
|
[Vrh] |
|
Silenoz Forumaš(ica)
Pridružen/a: 15. 10. 2011. (18:45:11) Postovi: (4F)16
Spol:
|
|
[Vrh] |
|
|