Facebook
From Sloppy Finch, 3 Years ago, written in C#.
This paste is a reply to Re: Re: Re: Re: Re: Re: ss from Commodious Cat - view diff
Embed
Download Paste or View Raw
Hits: 101
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/stat.h>
  5. #include <sys/sem.h>
  6. #include <sys/wait.h>
  7. int main( void )
  8. {
  9. int status;
  10. key_t semkey; //... zmienne opisujące
  11. int nsems,semflag,semid; // tworzoną tablicę semaforów
  12. struct sembuf sems; //... struktura dla semop()
  13. nsems = 1; //... tworzymy tablicę semaforów, z jednym semaforem
  14.  semkey = ftok( "/tmp",'k'+'m' );
  15.  semflag = IPC_CREAT | S_IRUSR | S_IWUSR;
  16.  semid = semget( semkey,nsems,semflag );
  17. sems.sem_num = 0; //... indeks do semafora, pierwszy=0 !
  18. sems.sem_op = 7; //... może współdzielić 7 procesów
  19. sems.sem_flg = 0x0; //... czyli z blokadą
  20. semop( semid,&sems,nsems ); //... inicjujemy semafor
  21. //... teraz pozostaje już tylko utworzyć proces potomny
  22. switch( fork() )
  23. {
  24. case -1: //... obsługa błędu fork()
  25. printf( "!.!.!... błąd fork()...!.!.!\n" ); exit( 1 ); break;
  26. case 0: //... kod dla procesu potomnego
  27. printf( "[%u] semval=%d\n",(unsigned)getpid(),
  28. semctl( semid,0,GETVAL ) ); exit( 0 ); break;
  29. default: //...kod dla procesu nadrzędnego
  30. wait( &status );
  31. printf( "[%u] semval=%d\n",(unsigned)getpid(),
  32. semctl( semid,0,GETVAL ) );
  33. semctl( semid,0x0,IPC_RMID); //... usuwamy semafory
  34. }
  35.  return 0;
  36. }

Replies to Re: Re: Re: Re: Re: Re: Re: ss rss

Title Name Language When
Re: Re: Re: Re: Re: Re: Re: Re: ss Melodic Octupus csharp 3 Years ago.