私は大量のデータを書き込む2つのプロセスを持っており、これらのプロセスの1つのファイルへの書き込みを同期させて制御したいと考えています。 (A1、A2、A3)と(B1、B2、B3)を含む処理2書き込みバッファBを含む処理1書き込みバッファA。 write()
システムコールを使用して、これらのバッファを同じファイル(一度に全バッファ:write(fd, A, sizeof(A))
)にディスクに書き込むと、ファイルスキーマはどのようになりますか?2つのプロセスの1つのファイルにアトミック書き込みを同期させるにはどうすればよいですか?
- A、BまたはB、Aのようなものでしょうか?
- か、それはこのようなことができます:システムコールはアトミックであるため、A1、A2、B1、A3、...
私はこれを聞いていますのよ。私たちが書き込んでいるデータバッファが大きすぎるとどうなりますか?それは普通のディスクファイル用のパイプのようなものですか?
信号がないので、 'O_APPEND'が有効になっていれば、A、BまたはB、Aを持つ必要があります。私は正しい? –
@マジド - はい、システム上の何もあなたを妨害しないと仮定すると、誰が最初に行くかに応じて、A、BまたはB、Aを得るでしょう。 – unpythonic
ローカルファイルシステム上の通常のファイルへの書き込みが中断されることはありません。 NFSには中断可能にするフラグがありますが、デフォルトはオフです。 –