2012-03-08 18 views
-2

"w"モードで同じファイルを開く2つのプログラムがあります。返されるファイルポインタは、どちらの場合も同じです。私はこれが起こらないと理解した。私が間違っている?2つのアプリケーションが同時に1つのファイルを開く

+0

どのような意味で間違っていますか? – Aziz

+0

あなたが意味することを理解していない: "返されるファイルポインタはどちらの場合も同じです"。そして、あなたは "競合状態"を調べるべきです。両方のプログラムが同時に同じファイルに書き込もうとするとどうなりますか? – chikuba

+0

同時に複数のスレッド/アプリケーション/ ..から同じ領域が書き込まれたときに、大きな問題に対処できますか? –

答えて

0

同時性を管理する必要があります。 2つの異なるプログラムまたはスレッドが1つのリソースにアクセスする場合、相互に排他的な条件でリソース(この場合はファイル)にアクセスするためにそれらを管理する必要があります。

1

書き込み用のファイルを同時に開くと、競合状態が悪くなり、同期に関する問題が発生する可能性があります。

fopenFILE構造体へのポインタを返します。この構造体は、アプリケーションのプライベートメモリ空間に割り当てられます。今日では、各プロセスに独自の(virtual) memory addressスペース(オペレーティングシステムによって実際のメモリアドレスにマップされています)があります。したがって、同じメモリアドレスが2つの独立したプログラムで使用されている場合、通常、後ろの実メモリは同じではありません。

FILE構造にはファイルを識別するためにオペレーティングシステムによって提供される(整数)ファイルハンドルがありますが、ファイルハンドルは(少なくともUnixのようなシステムでは)アプリケーション固有であるため、これは何も意味しません。

関連する問題