【发布时间】:2016-01-16 13:09:58
【问题描述】:
希望你能给我一些关于我的问题的建议。
我得到的是在 Raspberry Pi 上运行的 Web 服务器。在其上,C 程序在一定的时间间隔(1 秒)内写入 JPEG 文件,如下所示:
fout = fopen("/tmp/image1.jpg", "w");
fwrite(jpgBuffer, jpgFileSize, 1, fout);
fclose(fout);
我通过网络浏览器访问图像:“192.168.178.xxx/tmp/image1.jpg” 大多数情况下,图像显示完美。但是有时我会在图像中看到伪影。
我的假设是,在我从 Web 浏览器请求图像期间写入文件。我怎样才能避免这种行为?或者我如何确保在请求期间打开文件进行读取时不会写入文件。
我阅读了有关文件锁定的信息,但不确定这是否是可行的方法。我知道我可以在写入文件之前使用flock函数设置排他锁,然后再解锁。但我还读到相应的文件打开功能必须设置读取或共享锁才能使此方法起作用。但是我不知道我通过网络浏览器发出的http请求是否设置了这样的读锁。
欢迎提出任何建议。
非常感谢!
【问题讨论】:
标签: linux concurrency file-handling read-write