/* Fájlnév: fork-exec-villak.c
   Processz kreáció a "szokásos" fok-exec villával.
   Az exec?() rendszerhívás családból kettőt mutat be. 
   Egyikben a környezetet (environment) itt állítjuk be, 
   a másikban a környezetet a szülőtől örökli.
   Az exec?()-kel betöltendő futtaható program az echoall,
   ami kirja az argumentumait és a környezeti változóit.
   Készítő: dr. Vadász Dénes
   Dátum: 2005. október
*/   
#include	<sys/types.h>
#include	<sys/wait.h>
#include	<stdio.h>
#include 	<stdlib.h>
#include 	<unistd.h>
char	*env_init[] = {"USER=ismeretlen","PATH=/tmp","ENV=vége\n", NULL };

int
main(void)
{
	pid_t	pid;

	if ( (pid = fork()) < 0)
		perror("fork error");
	else if (pid == 0) {	/* 2 argumentum, beállitott environment */
		if (execle(strcat(getenv("BIN"),"/echoall"),
				   "echoall", "myarg1", "MY ARG2", (char *) 0,
				   env_init) < 0)
			perror("execle error");
	}
	if (waitpid(pid, NULL, 0) < 0)
		perror("wait error");

	if ( (pid = fork()) < 0)
		perror("fork error");
	else if (pid == 0) {	/* 1 arg, örökölt environment */
		if (execlp("echoall",
				   "echoall", "only 1 arg", (char *) 0) < 0)
			perror("execlp error");
	}
	exit(0);
}
/* A kimenet ehhez hasonló:

argv[0]: echoall
argv[1]: myarg1
argv[2]: MY ARG2
USER=ismeretlen
PATH=/tmp
ENV=vége

argv[0]: echoall
argv[1]: only 1 arg
TERM=xterm
SHELL=/bin/bash
OBJ=/home/staff/vadasz/obj/i386
SSH_CLIENT= ...
OLDPWD=/home/staff/vadasz/public_html/GEIAL302B
SSH_TTY=/dev/pts/2
ANT_HOME=/usr/local/share/ant/
USER=vadasz
PVM_ARCH=LINUX
MAIL=/var/mail/vadasz
PATH=/usr/local/share/jsdk/bin:/usr/local/share/jre/bin: ...
PWD=/home/staff/vadasz/public_html/GEIAL302B/Peldaprogramok
JAVA_HOME=/usr/local/share/jsdk/
SHLVL=1
HOME=/home/staff/vadasz
BIN=/home/staff/vadasz/bin/i386
LOGNAME=vadasz
CLASSPATH=/usr/local/share/jsdk/lib:/usr/local/share/jre/lib: ...
SSH_CONNECTION= ...
DISPLAY=:0.0
JINI_HOME=/usr/local/share/jini
_=./forkexec

*/
