我正在移植源代碼以打開/讀取/寫入多個進程之間共享的文件。它的工作原理以及在Windows下,當它主要是使用boost ::進程間(1.44)我沒有期待太多的問題,但我發現很奇怪:在Linux下boost :: interprocess :: create_or_open_file更改文件類型
//pseudo code
namespace bip = boost::interprocess;
namespace bipd = boost::interprocess::detail;
loop
bip::file_handle_t pFile = bipd::create_or_open_file(filename, bip::read_write);
bipd::acquire_file_lock(pFile);
// try to read bytes from pFile with 'read'
bipd::truncate_file(pFile, 0);
bipd::write_file(pFile, (const void*)(textBuffer)), bufLen);
當代碼運行在第一次創建文件並寫一篇文章。文件模式是ASCII(ASCII text, with very long lines
),我可以閱讀文本。 但是當循環第二次運行時,文件類型更改爲 data
,而textBuffer
在文件中,但是作爲二進制數據!
我檢查了boost/interprocess/details/os_file_functions.hpp
但我沒有找到該行爲的原因。
你有什麼想法嗎?