я ниже программы, но это не удалось удалить named_mutex в конце концов, распечатать результат «Mutex удалить провал»Проблема с удалением повышение :: межпроцессного :: named_mutex
void IPC::testNamedMutex()
{
named_mutex mutex(open_or_create, "MyMutex");
for (int i = 0; i < 10; i++)
{
mutex.lock();
cout << "Mutex taken" << endl;
std::fstream fs("test.txt", std::fstream::out | std::fstream::app);
if (fs)
{
fs << "Thread id: " << boost::this_thread::get_id() << ", "
<< "Iteration " << i << endl;
}
boost::this_thread::sleep(boost::posix_time::seconds(1));
mutex.unlock();
cout << "Mutex is unlocked" << endl;
}
cout << "Delete the file and mutex?(y/n): ";
char c;
cin >> c;
if (c == 'y' || c == 'Y')
{
if (remove("test.txt"))
cout << "File deleted" << endl;
else
cout << "File delete failed" << endl;
bool success=named_mutex::remove("MyMutex");
if (success)
cout << "Mutex removed" << endl;
else
cout << "Mutex delete failure" << endl;
}
}
Однако, если я бегу удалите вторую программу, например, ниже, она работает. Что может быть причиной?
void IPC::testDeleteNamedMutex()
{
cout << named_mutex::remove("MyMutex") << endl;
}
спасибо. Я запускаю unbuntu 12.04 с gcc4.8.1 в режиме отладки. – Michael
Я все еще расследую возможные проблемы с разрешением. Попробуйте 'chown -Rc $ UID/dev/shm' и/или' lsof + D/dev/shm/'для обнаружения любых нарушений обмена – sehe