So i was experimenting on how to use fork and semaphores for a homework and it seems everytime i run the program fork always returns a number >0, while what i wanted was to first have several processes be made then be stopped using semaphores and then have some of them restart again.
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
int     main(int argc,char *argv[])
{
int i,count;
 count = 0;
 pid_t  *Pc;
 Pc=(pid_t *) malloc((argc-2)*sizeof(pid_t));
 sem_t *sem;
  sem = (sem_t *) malloc((argc-2)*sizeof(sem_t));
     for (i = 0; i <= argc-2; i++){
      sem_init(&sem[i], 0, 0);
 }
     for (i =0; i<=argc-2; i++){
                    Pc[i] = fork();
                    if (Pc[i] == 0){
                   printf(" child");
                    sem_wait(&sem[i]);
                    printf("Experiment was a success!");
          }
           if (Pc[i]>0){
             printf("Parent");
}
    }
        for (i =0; i<=argc-2; i++){
           if (Pc[i] > 0)
            count++;
        }
    for (i= 0; i<=3; i++){
            if  ( count ==  argc-2){
            sem_post(&sem[i]);
 }
    }
}
nameofprogram 1 2
prints: Parent Child Parent Child
 
     
     
    