Les processus

Fermé
lila92 - 20 oct. 2014 à 23:21
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 - 21 oct. 2014 à 12:30
salut tout monde , j'ai un tp sur les sémaphores mé bon j'ai un probleme avec la création des processus car je veux faire l'idée d'un seul processus père et touts les autres des processus fils du meme pére , ( si quelqu'un parmis vous a une idée sur les processus il va facilement comprendre ce que je veux ) j'ai crée un code mais dans la boucle chaque nouveau processus il crée d'autres fils !!!!! svp si quelqu'un a passé déja sur une idée pareil n'hésitez pas à m'aidez svp , voila mon code :
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/sem.h>
#include<errno.h>
/***********************************************/
int p(int semid)
{
struct sembuf sempar;
sempar.sem_num=0;
sempar.sem_op=-1;
sempar.sem_flg=SEM_UNDO;
return semop(semid,&sempar,1);
}
/***************************************************************/
int v(int semid)
{
struct sembuf sempar;
sempar.sem_num=0;
sempar.sem_op=1;
sempar.sem_flg=SEM_UNDO;
return semop(semid,&sempar,1);
}
/***********************************************************/
main()
{
int pid,cpt=0,n=4,sp;
sp=semget(IPC_PRIVATE,1,IPC_CREAT|0666);
semctl(sp,0,SETVAL,1);

printf(" je suis le pére :%d\n ", getpid());

while(cpt<n)
{

if(fork()==-1)
{
printf("erreur");
}
else
{
if(fork()==0) // le Fils
{
printf(" je suis le fils ==%d-->mon père ==%d\n", getpid(), getppid());
}
}
//printf("je suis bloqué");
//p(sp);

}

1 réponse

sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
21 oct. 2014 à 12:30
Bonjour
Si je comprends bien ton idée à mon avis il est préférable d'utiliser les threads UNIX et de ce fait tu pourras faire hériter au fils certains attributs du père bref quant au semaphore elles sont utilisées pour restreindre l'accès à des ressources partagées voici un exemple simple ci-dessous et courant sur la compréhension de l'héritage d'un processus UNIX (sans l'utilisation de semaphore).
Et par la même occasion tu comprendras pourquoi les processus n'ont pas de mère
à bientôt
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main ( void  ){
	
	pid_t t_id;
	
	switch( t_id = fork() ){
		
		case -1:
			perror( "Erreur Processus\n");
			exit( EXIT_FAILURE );
			
		case 0:
			printf( "Fils PID\t:%d Hérité du père %d\n", getpid(), getppid() );
			printf( "FIN PROCESS FILS\n" );
			break;
			
		default:
			printf( "Process PID\t:%d de père %d\n", getpid(), getppid() );
			sleep( 1 );
			printf( "FIN DE PROCESS PERE\n" );
			break; 
	}
	
	
	return ( EXIT_SUCCESS );
}
0