0

さまざまなユーザーが、100% C (CGI) でプログラムされた Web サイトを閲覧しています。各 Web ページは、fopen/fgets/fread を使用して、ファイルから共通データ (ナビゲーション バーなど) を読み取ります。さまざまな人が同じページを閲覧している場合、 fopen/fgets/fread への各呼び出しは互いに干渉しますか? もしそうなら、これは C でどのように解決できますか? (これは Linux サーバーであり、コンパイルは gcc で行われ、これは C でプログラムされた CGI Web サイト用です。)

例:


FILE *DATAFILE = fopen(PATH, "r");
if ( DATAFILE != NULL )
{
    while ( fgets( LINE, BUFFER, DATAFILE ) )
    {
        /* do something */
    }
}
4

3 に答える 3

5

Linuxでは、複数のプロセスがファイルから同時に読み取ることは完全に安全です。

于 2010-04-12T23:49:46.460 に答える
3

複数のプロセスから読み取ることは完全に安全です (最新のシステムでは)。

fopen() を呼び出すと、フラグや現在位置などの独自のメンバーを持つ FILE 構造体へのポインターが返されます。

他の人がファイルを読んでいる間に、誰かがファイルを変更 (例: 縮小) したかどうかだけを気にする必要があります。しかし、これはあなたの場合ではないと思います。

于 2010-04-13T00:03:04.473 に答える
2

ファイルからの同時読み取り(複数のスレッド (個別に開かれた記述子から想定) または複数のプロセスから) は明確に定義されており、すべての最新の主要なオペレーティング システムで許可されています。ファイルへの同時書き込みのみが正しく定義されておらず、ロックせずに行うべきではありません (ログのようにファイルに追加していて、OS がそのような同時書き込みを明確に定義している場合を除きます)。

于 2010-04-13T00:41:16.783 に答える