是否可以同时使用C ++应用程序和Java应用程序读取和写入同一文本文件,而不会写出相互矛盾的行/字符?我现在已经测试了两个java应用程序,似乎可以从一个进程写入文件,即使其他进程已打开流但未关闭它。有没有办法锁定文件,以便其他进程需要等待?
答案 0 :(得分:1)
我想是的,例如boost :: interprocess http://www.boost.org/doc/libs/1_50_0/doc/html/interprocess.html文件锁http://www.boost.org/doc/libs/1_50_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.file_lock
答案 1 :(得分:0)
对于写入同一文件的两个进程,只要在行边界上刷新输出缓冲区(即,在编写换行符字符序列后刷新),写入文件的数据应该很好地进行交错。 / p>
如果一个进程正在写入而另一个进程正在从同一个文件读取,则只需确保读取不会超过写入。如果读取得到文件结束条件(或更糟糕的是,部分数据行),那么您就知道读取过程必须等到写入过程完成将另一块数据写入文件之后。
如果您需要更复杂的读/写控制,您应该考虑某种锁定机制。