Это сегмент кода, где мне интересно, почему [2] и [3] никогда не выдаются.
int main(int argc, char* argv[]){
const char *nSegmentName, *nInstanceName;
using namespace boost::interprocess;
if(argc == 5){
mSegmentName = argv[1];
mInstanceName = argv[2];
mIdent = argv[3];
mSender = argv[4];
nSegmentName = ChStringChar(mSegmentName);
nInstanceName = ChStringChar(mInstanceName);
managed_shared_memory segment(open_only, nSegmentName);
tpIF* instance = segment.find<tpIF>(nInstanceName).first;
if (!instance) return 1;
mDisplay = instance->GetDisplay();
Run_EventLoop(instance);
std::cout<<"\nSECTION END 0="<< mDisplay; // [1]
std::cout.flush();
segment.destroy<tpIF>(nInstanceName);
std::cout<<"\nSECTION END 1="<< mDisplay; // [2]
std::cout.flush();
}
std::cout<<"\nSECTION END 2"; // [3]
std::cout.flush();
return 0;
}
int Run_EventLoop(tpIF *nIns){
time_t timer, nWait = 1;
std::cout<<"\nSECTION WAIT="<< nWait;
std::cout.flush();
while(nWait > 0){
time(&timer);
if(nIns->Test == 1){
nWait = 0;
}
}
std::cout<<"\nSECTION LOOP="<< mDisplay; // [4]
std::cout.flush();
return 0;
}
[1] и [4] напечатаны, но не [2] и [3].
Мой вопрос: почему [2] и [3] не напечатаны?
Задача ещё не решена.
Других решений пока нет …