Используйте библиотеку межпроцессного повышения , чтобы создать блок памяти, который будет создан процессом. Если он уже существует, это означает, что существует еще один экземпляр процесса. Выход.
Более точная ссылка на то, что вам нужно, будет эта .
#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/scoped_ptr.hpp>
int main()
{
using boost::interprocess;
boost::scoped_ptr<shared_memory_object> createSharedMemoryOrDie;
try
{
createSharedMemoryOrDie.reset(
new shared_memory_object(create_only, "shared_memory", read_write));
} catch(...)
{
// executable is already running
return 1;
}
// do your thing here
}