Я надеюсь, что вы можете дать мне несколько советов по моей проблеме.
У меня есть веб-сервер, работающий на Raspberry Pi. На нем C-программа записывает JPEG-файл через определенный интервал времени (1 секунду) следующим образом:
fout = fopen("/tmp/image1.jpg", "w");
fwrite(jpgBuffer, jpgFileSize, 1, fout);
fclose(fout);
Я получаю доступ к изображению через свой веб-браузер: «192.168.178.xxx/tmp/image1.jpg». Большую часть времени изображение отображается идеально. Однако иногда я вижу артефакты на изображении.
Я предполагаю, что файл записывается во время запроса изображения из веб-браузера. Как избежать такого поведения? Или как я могу гарантировать, что файл не будет записан, пока он открыт для чтения во время запроса.
Я читал о блокировке файлов, но не уверен, что это правильный путь. Я знаю, что могу установить эксклюзивную блокировку с помощью функции flock перед записью в файл и затем разблокировать его. Но я также читал, что соответствующая функция открытия файла должна установить блокировку чтения или общую блокировку, чтобы этот метод работал. Однако я не знаю, устанавливает ли HTTP-запрос, который я выдаю через веб-браузер, такую блокировку чтения.
Любые предложения приветствуются.
Большое спасибо!