ファイルを開いてからforkすると、そのファイルディスクリプタはシステムワイドなオープンファイルテーブルの同じ項目を指すので、書き込み位置(file offset)も共有され、同時に追加書き込みをしても競合は発生しないと思ったのですが、実験してみたら log.txt PARENT 24043 894 helloCPARENT 24043 895 hellCHPARENT 24043 896 helCHIPARENT 24043 897 heCHILPARENT 24043 898 hello のようにおかしな部分が出ていました。環境はLinux 3.10.0です。 基礎的なことかと思いますが、どうしてこうなるのか教えていただけないでしょうか。 実験に使ったコード: #include <stdio.h> #include <unistd.h> #include <fcntl.h> #incl
![forkしたプロセスから共有するファイルディスクリプタへの書き込みについて](https://cdn-ak-scissors.b.st-hatena.com/image/square/f6bc393cd0b6bd2196935e603c5d031bd6ca6699/height=288;version=1;width=512/https%3A%2F%2Fcdn.sstatic.net%2FSites%2Fja%2FImg%2Fapple-touch-icon%402.png%3Fv%3D1cfb10b305ca)