  611

     

        IEEE Std
1003.1-2001       -
   ,     ( ,  -
  ).

       
(.. ) ,    process-shared.

    _POSIX_THREAD_PROCESS_SHARED,  -
 process-shared     ,    
        .

          -
 ,   process-shared     -
  PTHREAD_PROCESS_PRIVATE.  , 
  PTHREAD_PROCESS_PRIVATE  process-
shared,       ,    -
   .  , 
  PTHREAD_PROCESS_SHARED  process-
shared,       ,  
  .  ,       
. ,     -
  ,      .

/* sem.h */
struct semaphore {

pthread_mutex_t lock;

pthread_cond_t nonzero;

unsigned count;

};

typedef struct semaphore semaphore_t;

semaphore_t *semaphore_create (char *semaphore_name) ;

semaphore_t *semaphore_open (char *semaphore_name) ;

void semaphore_post (semaphore_t *semap) ;

void semaphore_wait (semaphore_t *semap) ;

void semaphore_close (semaphore_t *semap) ;

/* sem.c */

#include <sys/types.h>

#include <sys/stat.h>

#include <sys/mman.h>

#include <fcntl.h>

#include <pthread.h>

#include "sem.h"

semaphore_t *

semaphore_create (char *semaphore_name)

{

int fd;

semaphore_t *semap;

pthread_mutexattr_t psharedm;