summaryrefslogtreecommitdiff
path: root/examples/System_V_IPC/SV_Semaphores/Semaphore_Client.cpp
blob: b7fe34725e748e5c22a0881578d30b29c0282e27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "Semaphore_Test.h"
// $Id$

#include "ace/SV_Shared_Memory.h"
#include "ace/SV_Semaphore_Simple.h"

int
main (void)
{
  ACE_SV_Shared_Memory shm_client (SHM_KEY, 
				   SHMSZ, 
				   ACE_SV_Shared_Memory::ACE_OPEN);
  ACE_SV_Semaphore_Simple sem (SEM_KEY_1, 
			       ACE_SV_Semaphore_Simple::ACE_OPEN, 0, 2);

  char *s = (char *) shm_client.get_segment_ptr ();

  if (sem.acquire (0) < 0)
    ACE_OS::perror ("client sem.acquire"), ACE_OS::exit (1);

  while (*s != '\0')
    putchar (*s++);

  putchar ('\n');

  if (sem.release (1) < 0)
    ACE_OS::perror ("client sem.release"), ACE_OS::exit (1);

  return 0;
}