fread
とfwrite
の呼び出しは、マニュアルページ(man fwrite
)のようにロックされていると思われます(unlocked_stdio
)。fread/fwriteでロックし、別のプロセスから呼び出されました
これらのロックはプロセス間で有効ですか、同じプロセス内でのみロックされるのですか?
fread
とfwrite
の呼び出しは、マニュアルページ(man fwrite
)のようにロックされていると思われます(unlocked_stdio
)。fread/fwriteでロックし、別のプロセスから呼び出されました
これらのロックはプロセス間で有効ですか、同じプロセス内でのみロックされるのですか?
プロセス内でロックさえしません。彼らはあなたがそれらを呼び出す実際のストリームオブジェクトをロックするだけです。たとえば、同じ基礎ファイルまたは端末を参照する2つのFILE*
オブジェクトがある場合、fread
およびfwrite
は、同じプロセスであっても、互いにうっすらと踏み合うことができます。
... oh oh ...だから、ここの唯一の保証はFILE * stream it (同じプロセス内であればうまくいけば)元のファイルに書き込まれますが、他のオペレーションでインターリーブされるファイルには書き込まれません。したがって、2が正しく同期していることを確認するのは開発者です。 –
@AbruzzoForteeGentileプロセス間で、 'flock'形式のロックを使用できます。プロセス内では、すべてのコードを書いているので、それを実行する方法を見つけることができます。 –
afaik、引用符で囲まれた文はマルチスレッド –
「* Locking *」を指していますか?どのロック?私たちの情報源を挙げて大胆に – alk
ソースが追加されました。残念ながら私はこの記事を見つけたばかりです。 Solarisを参照していますが、C言語に言及しています。http://stackoverflow.com/questions/3685115/does-fwrite-call-any-lock-internally –