开两个过程

时间:2009-12-03 21:03:45

标签: c

在一定时间内有两个进程多次写入同一文件可以使用fopen(追加模式),fprintf,fclose功能。 他们等待数据并重复打开,写入,关闭操作。

是否有可能没有写入数据?

3 个答案:

答案 0 :(得分:1)

fopen()函数打开文件,没有共享保护(SH_DENYNO),至少在Win32 / VC ++上,所以如果没有某种锁定协议,你可能会破坏文件。

如果您的应用是Win32,则可以使用CreateFile API指定共享模式。 _fsopen()函数更具可移植性,但不像fopen()那样可移植。

答案 1 :(得分:1)

如果您的两个进程正在访问同一个文件,则应使用Mutex来防止两个进程同时写入该文件。

上面的链接适用于Windows平台。对于其他平台,您需要平台的相应构造,例如使用PTHREAD_PROCESS_SHARED创建的pthreads互斥锁。

答案 2 :(得分:1)

如果您不在Windows上,合作流程中最简单的方法是使用flock。 (使用fdopen从fd获取文件。)