summaryrefslogtreecommitdiff
path: root/ACE/examples/APG/Shared_Memory/Mem_Map.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/examples/APG/Shared_Memory/Mem_Map.cpp')
-rw-r--r--ACE/examples/APG/Shared_Memory/Mem_Map.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/ACE/examples/APG/Shared_Memory/Mem_Map.cpp b/ACE/examples/APG/Shared_Memory/Mem_Map.cpp
new file mode 100644
index 00000000000..719fdbeb803
--- /dev/null
+++ b/ACE/examples/APG/Shared_Memory/Mem_Map.cpp
@@ -0,0 +1,35 @@
+// $Id$
+
+#include "ace/OS_NS_fcntl.h"
+#include "ace/OS_NS_string.h"
+#include "ace/Mem_Map.h"
+#include "ace/Log_Msg.h"
+
+// Listing 1 code/ch17
+int ACE_TMAIN (int, ACE_TCHAR *argv[])
+{
+ ACE_HANDLE srcHandle = ACE_OS::open (argv[1], O_RDONLY);
+ ACE_ASSERT(srcHandle != ACE_INVALID_HANDLE);
+
+ ACE_Mem_Map srcMap (srcHandle, static_cast<size_t> (-1), PROT_READ, ACE_MAP_PRIVATE);
+ ACE_ASSERT(srcMap.addr () != 0);
+
+ ACE_Mem_Map destMap (argv[2],
+ srcMap.size (),
+ O_RDWR | O_CREAT,
+ ACE_DEFAULT_FILE_PERMS,
+ PROT_RDWR,
+ ACE_MAP_SHARED);
+ ACE_ASSERT(destMap.addr () != 0);
+
+ ACE_OS::memcpy (destMap.addr (),
+ srcMap.addr (),
+ srcMap.size ());
+ destMap.sync ();
+
+ srcMap.close ();
+ destMap.close ();
+ return 0;
+}
+// Listing 1
+