/* Fájlnév: system-syscall-pelda.c
   A system() rendszerhívás fork-exec villával gyermek processzt készít, 
   a gyermekben a burkot (shell) futtatja, átadva neki a rendszerhívás 
   argumentumát, mint parancsot. A system() megvárja, míg a gyermek
   processz (a burok) befejeződik, és visszadja a gyermek visszatérési
   értékét. 
   A példánkhoz a pr_exit() függvény (forrását lásd a lib jegyzékben)
   a befejeződés (termination) jellemzőjét és magát a visszatérési 
   értéket írja ki. A befejeződés jellemzője normális, ha maga a processz
   fejezi be magát, és nem normális, ha szignál hatására terminálódik 
   (utóbbira itt nincs példa). 
   Példánkban három system() hívás van. Elsőben a date parancsot hajtatjuk
   végre, másodikban egy feltehetően nem létező parancsot hajtatnánk 
   végre, harmadikban pedig egy parancs-listát. 
   A system() rendszerhívás megértéséhez a lib/system.c fájl egy lehetséges 
   implementációt ismertet.
   Készítő: dr. Vadász Dénes
   Dátum: 2005. október
*/   

#include	<stdio.h>
#include	<stdlib.h>

int
main(void)
{
	int		status;

	if ( (status = system("date")) < 0)
		perror("system() error");
	pr_exit(status); 	/* várhatóan 0 */

	if ( (status = system("nosuchcommand")) < 0)
		perror("system() error");
	pr_exit(status);	/* várhatóan nem 0 */

	if ( (status = system("who; exit 44")) < 0)
		perror("system() error");
	pr_exit(status);	/* status = 44 */

	exit(0);
}
/*Az eredmény ehhez hasonló:

Wed Oct 26 14:37:36 CEST 2005
Normális befejeződés, visszadott érték = 0
sh: line 1: nosuchcommand: command not found
Normális befejeződés, visszadott érték = 127
atyin    tty1         Oct 26 13:47
atyin    :0           Oct 26 13:47
vadasz   pts/2        Oct 26 10:37 (denes.iit.uni-miskolc.hu)
krusnicz pts/4        Oct 26 13:00 (zeus.iit.uni-miskolc.hu)
Normális befejeződés, visszadott érték = 44

*/
