c - Unexpected Output Running Semaphore -


i'm trying write program forks process , stays in sync first process doesn't start (i)th iteration until second process has finished (i-1)th iteration. possible using 2 semaphores? have far:

#include <stdio.h>    #include <sys/types.h> #include <unistd.h>   #include <stdlib.h>   #include <errno.h>   #include <semaphore.h>  sem_t sema, semb,sem,m;  int main(void) {  int i;     pid_t child_a, child_b,pid2,pid3;     sem_init(&sema, 0, 1);     sem_init(&semb, 0, 0); sem_init(&m, 0, 0);     child_a = fork(); //wait();     if (child_a == 0) {     //  int j;        pid2 =getpid();       (i = 0; < 5; )       {     sem_wait(&sema); //sem_wait(&m);          printf("child1: %d\n", i);      i++;      //printf("pid1: %d\n", pid2);          //printf("--------------------------\n");          sleep(3); //sem_post(&m);  sem_post(&semb);       } }        else {     child_b = fork(); //wait();     if (child_b == 0) {        pid3 =getpid();       (i = 0; < 5;)       { sem_wait(&semb); //sem_wait(&m);          printf("child2: %d\n", i);  i++;          //printf("pid2: %d\n", pid3);          //printf("--------------------------\n");          sleep(5); //sem_post(&m); sem_post(&sema);        }      }      }      exit(0);    return 0; } 

the output expect is:

child1: 0 child2: 0 child1: 1 child2: 1 child1: 2 child2: 2 child1: 3 child2: 3 child1: 4 child2: 4 child1: 5 child2: 5 child1: 6 child2: 6 child1: 7 child2: 7 child1: 8 child2: 8 child1: 9 child2: 9 

but 1 child:

child1: 0 

you may need three semaphores.

sem1 sem2 sem3

process1:

if(firstrun){     initialize semaphores     wait sem2 }  post sem1 wait sem3 

process2:

if(firstrun){     initialize semaphores     post sem2 }  wait sem1 post sem3 

note: in initialize semaphores have map semaphores shared memory accessible both processes. initialize them default value 0, 0, 0.


Comments

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

How can I fetch data from a web server in an android application? -

jquery - How can I dynamically add a browser tab? -