Написать временный файл и использовать его как блокировку.
Редактировать: Чтобы ответить на комментарий: Если вы работаете в системе Unix, напишите файл / tmp / my_application_lock_file. Если он уже существует, остановите вашу программу с соответствующим сообщением. При выходе из создателя файла удалите его.
#include <sys/stat.h>
#include <errno.h>
#include <unistd.h>
#include <iostream>
#include <fstream>
int main (void)
{
struct stat file_info;
// test for lock file
if (stat("/tmp/my_application_lock", &file_info) == 0) {
std::cout << "My application is already running, will abort now..." << std::endl;
return -1;
} else {
// create lock file
std::ofstream out;
out.open("/tmp/my_application_lock");
if (!out) {
std::cout << "Could not create lock file!" << std::endl;
return -1;
}
out << "locked" << std::endl;
out.close();
// do some work
std::string s;
std::cin >> s;
// remove lock file
errno = 0;
if (unlink("/tmp/my_application_lock"))
std::cout << "Error: " << strerror(errno) << std::endl;
}
return 0;
}