mapped_file_test.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 88 行
CPP
88 行
////////////////////////////////////////////////////////////////////////////////// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost// Software License, Version 1.0. (See accompanying file// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//// See http://www.boost.org/libs/interprocess for documentation.////////////////////////////////////////////////////////////////////////////////#include <boost/interprocess/detail/config_begin.hpp>#include <boost/interprocess/allocators/allocator.hpp>#include <boost/interprocess/containers/vector.hpp>#include <boost/interprocess/detail/file_wrapper.hpp>#include <boost/interprocess/detail/managed_open_or_create_impl.hpp>#include "named_creation_template.hpp"#include <cstdio>#include <cstring>#include <string>#include "get_process_id_name.hpp"using namespace boost::interprocess;static const std::size_t FileSize = 1000;static const char * FileName = test::get_process_id_name();struct file_destroyer{ ~file_destroyer() { //The last destructor will destroy the file std::remove(FileName); }};//This wrapper is necessary to have a common constructor//in generic named_creation_template functionsclass mapped_file_creation_test_wrapper : public file_destroyer , public boost::interprocess::detail::managed_open_or_create_impl <boost::interprocess::detail::file_wrapper>{ typedef boost::interprocess::detail::managed_open_or_create_impl <boost::interprocess::detail::file_wrapper> mapped_file; public: mapped_file_creation_test_wrapper(boost::interprocess::create_only_t) : mapped_file(boost::interprocess::create_only, FileName, FileSize) {} mapped_file_creation_test_wrapper(boost::interprocess::open_only_t) : mapped_file(boost::interprocess::open_only, FileName) {} mapped_file_creation_test_wrapper(boost::interprocess::open_or_create_t) : mapped_file(boost::interprocess::open_or_create, FileName, FileSize) {}};int main (){ typedef boost::interprocess::detail::managed_open_or_create_impl <boost::interprocess::detail::file_wrapper> mapped_file; std::remove(FileName); test::test_named_creation<mapped_file_creation_test_wrapper>(); //Create and get name, size and address { mapped_file file1(create_only, FileName, FileSize); //Compare name if(std::strcmp(file1.get_name(), FileName) != 0){ return 1; } //Overwrite all memory std::memset(file1.get_user_address(), 0, file1.get_user_size()); //Now test move semantics mapped_file move_ctor(detail::move_impl(file1)); mapped_file move_assign; move_assign = detail::move_impl(move_ctor); } std::remove(FileName); return 0;}#include <boost/interprocess/detail/config_end.hpp>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?