两个应用程序同时打开一个文件

时间:2012-03-08 10:12:20

标签: c memory fopen

我有两个程序在“w”模式下打开同一个文件。在两种情况下返回的文件指针都是相同的。我明白这不应该发生。我错了吗?

2 个答案:

答案 0 :(得分:1)

同时打开文件进行写入可能会导致恶劣的竞争条件,并且已经提到了同步问题。

对于您的问题:fopen返回指向FILE结构的指针。此结构分配在应用程序的专用内存空间中。如今,每个进程都有自己独立的(virtual) memory address空间(由操作系统映射到实际内存地址)。因此,如果在两个独立程序中使用相同的内存地址,通常后面的实际内存不一样。

在FILE结构中有一个(整数)文件句柄,由操作系统提供来识别文件,但文件句柄(至少在Unix类似系统中)是特定于应用程序的,所以即使它们相等,这个什么都没有。

答案 1 :(得分:0)

您需要管理并发性。如果2个不同的程序或线程访问单个资源,则需要对它们进行管理以访问具有互斥条件的资源(在本例中为文件)。