
I either do not understand what I am seeing, or I may have stumbled upon a bug, at least in a Windows environment. Or, of course, my expectations may be unrealistic. The short of this is that when I create a boost::interprocess::shared_memory_object that isn't removed for the duration of the program's run, the reading program's run can't seem to open the shared_memory_object, despite creating a boost::interprocess::permissions object and calling 'set_unrestricted()'. I get an exception indicating that access is denied. If nothing else, the code I've provided is an interprocess version of the classic read-writer's problem, second version (writers preferred). It may be of use to someone with a little cleaning. Environment: Compiler: MSVC++ 10 OS: Win 7 Pro, 64-bit. Steps to reproduce: 1. In VC++ 10, create an empty command-line project. 2. Replace contents of your .cpp with the code in this e-mail. 3. Compile. 4. Run the executable twice, first with an argument, next without. Expected results: The executable run without arguments indicates how much data was transferred on the same line. Actual results: The executable run without arguments complains that access is denied. NOTE: If you #define BOLD_NEW_TEST and recompile, this program runs according to expectations. This causes the objects to be compiled in a way where the shared_memory_objects only last for as long as it takes to write or read the data. I suspect this shouldn't be necessary, but perhaps I'm wrong. The error is especially peculiar to me, as I can open the file itself with a text editor. It doesn't seem like it should be denied. - Trey