2017-01-09 8 views
0

freadfwriteの呼び出しは、マニュアルページ(man fwrite)のようにロックされていると思われます(unlocked_stdio)。fread/fwriteでロックし、別のプロセスから呼び出されました

これらのロックはプロセス間で有効ですか、同じプロセス内でのみロックされるのですか?

+0

afaik、引用符で囲まれた文はマルチスレッド –

+0

「* Locking *」を指していますか?どのロック?私たちの情報源を挙げて大胆に – alk

+0

ソースが追加されました。残念ながら私はこの記事を見つけたばかりです。 Solarisを参照していますが、C言語に言及しています。http://stackoverflow.com/questions/3685115/does-fwrite-call-any-lock-internally –

答えて

3

プロセス内でロックさえしません。彼らはあなたがそれらを呼び出す実際のストリームオブジェクトをロックするだけです。たとえば、同じ基礎ファイルまたは端末を参照する2つのFILE*オブジェクトがある場合、freadおよびfwriteは、同じプロセスであっても、互いにうっすらと踏み合うことができます。

+0

... oh oh ...だから、ここの唯一の保証はFILE * stream it (同じプロセス内であればうまくいけば)元のファイルに書き込まれますが、他のオペレーションでインターリーブされるファイルには書き込まれません。したがって、2が正しく同期していることを確認するのは開発者です。 –

+1

@AbruzzoForteeGentileプロセス間で、 'flock'形式のロックを使用できます。プロセス内では、すべてのコードを書いているので、それを実行する方法を見つけることができます。 –

関連する問題