diff options
Diffstat (limited to 'ACE/examples/APG/Shared_Memory/Mem_Map.cpp')
-rw-r--r-- | ACE/examples/APG/Shared_Memory/Mem_Map.cpp | 35 |
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 + |