taf*_*kje 2 unix parallel-processing logging
我写了一个并行执行命令的脚本.我让他们都写一个条目到同一个日志文件.如果订单错误或条目交错并不重要,但我注意到有些条目丢失了.我应该在写入之前锁定文件,但是,如果多个进程同时尝试写入文件,它会导致缺少条目吗?
是的,如果不同的进程独立打开并写入同一文件,则可能导致写入重叠和数据丢失.发生这种情况是因为每个进程都将获得自己的文件指针,该指针仅通过本地写入进行.
一个更好的选择可能是在所有工作进程的祖先中打开一次日志文件,让它继承fork()并由它们用于日志记录,而不是锁定.这意味着将有一个共享文件指针,当任何进程写入新条目时,该指针会前进.