在一定时间内有两个进程多次写入同一文件可以使用fopen(追加模式),fprintf,fclose功能。 他们等待数据并重复打开,写入,关闭操作。
是否有可能没有写入数据?
答案 0 :(得分:1)
fopen()
函数打开文件,没有共享保护(SH_DENYNO
),至少在Win32 / VC ++上,所以如果没有某种锁定协议,你可能会破坏文件。
如果您的应用是Win32,则可以使用CreateFile
API指定共享模式。 _fsopen()
函数更具可移植性,但不像fopen()
那样可移植。
答案 1 :(得分:1)
如果您的两个进程正在访问同一个文件,则应使用Mutex来防止两个进程同时写入该文件。
上面的链接适用于Windows平台。对于其他平台,您需要平台的相应构造,例如使用PTHREAD_PROCESS_SHARED
创建的pthreads互斥锁。
答案 2 :(得分:1)