Я ищу портативный способ (linux & Windows), чтобы файл был модифицирован только одним процессом, а не другими в C/C++.
Полное требование состоит в том, что я хочу, чтобы файл был модифицирован только одним запущенным процессом, так как другие могли только читать его.
Трудность состоит в том, что в этом процессе используется библиотека поставщика, которая будет многократно запирать файл/файл в течение его жизни (десятки секунд).
благодаря
Вы должны использовать "межпроцессные коммуникации",
Например, в Windows вы можете использовать следующий код, который гарантирует, что только один процесс сможет записать в этот файл.
int WriteToFile()
{
HANDLE _mutex = CreateMutex(NULL, TRUE, L"__File_Write__");
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
return -1;
}
else
{
//write to file
return 0;
}
}