ファイルの操作とプロセス

ファイルの操作とプロセス

2つの異なるプロセス(親と子)が同じテキストファイルを表示して作業できますか?

これを行いましたが、両方のプロセスでファイルを開くにはfopen()を使用する必要があります。私の期待は、プロセスの1つがファイルを開き、他のプロセスがそれを見て操作できることです。

ベストアンサー1

~からfork(2)手動私のOpenBSDシステムで(ハイライト):

子プロセスには、親プロセス記述子の独自のコピーがあります。これらの記述子は同じ基本オブジェクトを参照するため、たとえば次のようになります。ファイルオブジェクトのファイルポインタは、子と親の間で共有されます。lseek(2)、子プロセスの記述子が後続read(2) またはwrite(2)親プロセス記述子に影響を与える可能性があります。さらに、シェルはこの記述子のコピーを使用して標準入力と出力を設定し、新しく作成されたプロセスのパイプを設定します。

これは、子プロセスをフォークする前に親プロセスでファイルを開くと、両方のプロセスが同じファイルを開くことを意味します。ただし、子プロセスがファイルを読み取ると、親プロセスのファイルポインタも移動されます。

両方のプロセスでファイルにアクセスする独立して、両方のプロセスでファイルを開く必要があります。

親からファイルを開くと後ろに呼び出すfork()と、子プロセスで開かず、その逆も同様です。

おすすめ記事