lukasz.proszek.info

Powrót do listy plików

powielacz.c

//POWIELACZ
#include "powielacz.h"

int main(int argc, char *argv[])
{
  
//sprawdzenie ilości argumentów.
    if (argc != 3)
  {
    printf ("zła liczba parametrów");
    printf ("\n wywoływanie: \n $ powielacz nazwa_programu liczba_powieleń\n");
    //printf ("aby usyskać instrukcję używania wywołaj program z parametrem --help\n");
    exit (0);
  }
  
  int s, i, j ;
  key_t key;
  pid_t pid=0;
     char str_s[ 100 ];
  //jakies operacje
  key = ftok ("/etc/fstab", 666);
  s = init (key, 1);
  
  sprintf( str_s, "%d", s );
  printf("[III] identyfikator semafora [%i]=[%s]",s,str_s);
  //sleep(2);
    printf ("\n[iii] wartość semafora [%i]\t czekających [%i]",sem_val(s),sem_ile(s));
  //zmienna key została wcześniej zainicjowana
  j=atoi(argv[2]);
    for (i = 1; i <= j; i++)
  {
    switch (pid=fork ())
    {
    case -1:
      perror ("[eee] fork error");
      exit (-1);

    case 0:
      sleep(2);
  //  printf("{III} nastąpi próba utworzenia procesu");
      execl(argv[1],argv[1],&str_s,NULL);
      perror ("execl error");
      exit (-1);
    default:
    ;
    }
    if(i==j){waitpid (pid, NULL, 0);}
  }
  
  sem_rm(s);
  return 0;
}

składania pokolorowana przez Code2HTML, v. 0.9.1