TACHE	Prod(void)
{
    puts("------> Start Prod");
    while(1) {
        puts("------> Prod : puis-je?");
        s_wait(mySem);
        puts("------> Prod : je prod");
        field.file[field.fin] = field.fin;
        field.fin = (field.fin+1) % MAX_TACHES;
        puts("------> Prod : go");
        s_signal(mySem2);
        s_signal(mySem2);
        s_signal(mySem2);
    }
    fin_tache();
}
Example #2
0
main(int argc,char *argv[]){
	int shmid = init(shmkey);
	signal(SIGUSR2,handler1);
	int shpkey = init(pkey);
	 sem1 = sem_init(semkey1,0);
	 sem2 = sem_init(semkey2,0);
	pid = (int*)shmat(shmid,NULL,0);
	if(pid == (int*)-1)
	{
		printf("shmat error!!\n");
		exit(0);
	}
	spointer = (char*)shmat(shpkey,NULL,0);
	if(spointer == (char*)-1){
		printf("Shmget error2!!\n");
	}
	scpid= *pid;
	printf("%d\n",scpid);
	*pid = getpid();
	printf("process id is %d\n",*pid);
	s_signal(sem2);
	sleep(5);
	printf("signal sent\n");
	
	while(1){signal(SIGUSR2,handler1);}
	
}
TACHE	Conso2(void)
{
    puts("------> Start Conso 2");
    while(1) {
        puts("------> Conso 2 : puis-je ?");
        s_wait(mySem2);
        printf("Conso 2 : j'ai mangé : %d\n",field.file[field.deb]);
        field.deb = (field.deb+1) % MAX_TACHES;
        s_signal(mySem);
        puts("------> Conso 2 : go");
    }
    fin_tache();
}
Example #4
0
void handler1(){
	printf("handler1 is on.............\n");
	printf("%s\n",spointer);
	char *sp = spointer;
	int i=0;
	while(*sp!='|')
	{

		rd[i] = *sp;
		printf("%c  ",rd[i] );
		sp++;
		i++;
	}

	
	memset(spointer,'\0',10);
	
	char ws[5] ; ws[0]='w';ws[1]='s';ws[2]=rd[0];ws[3]='\0';
	char rs[5] ; rs[0]='r';rs[1]='s';rs[2]=rd[0];rs[3]='\0';
	if(mkfifo(ws,0666) == -1){
		printf("mkfifo error ws\n");
		exit(0);
	}
	 if(mkfifo(rs,0666) == -1){
	 	printf("mkfifo error\n");
	 	exit(0);
	 }
	
s_signal(sem1);
	fr = open(rs,O_RDONLY);
	if(fr==-1){
		printf("open error!!\n");
		exit(0);
	}
	fw = open(ws,O_WRONLY);
		if(fw == -1){
			printf("open error!!\n");
			exit(0);
		}
		printf("Awesomee\n");

	pthread_t pwrite,pread;
	pthread_create(&pread,NULL,fiforead,(void*)0);
	pthread_create(&pwrite,NULL,fiforead,(void*)0);
	pthread_join(pread,NULL);
	pthread_join(pwrite,NULL);
}
Example #5
0
static void *
server_thread(void *vp)
{
    SERVER *sp = (SERVER *) vp;


    if (debug)
	fprintf(stderr, "server_thread: Started.\n");
    
    s_signal(SIGUSR1, sigusr1_handler);
    
    server_run_all(sp);

    pthread_mutex_lock(&sp->mtx);
    sp->state = 0;
    pthread_mutex_unlock(&sp->mtx);

    if (debug)
	fprintf(stderr, "server_thread: Terminating.\n");
    
    return NULL;
}