| 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: (3562)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] | 
		 | 
	
	
		 |