2つの異なるプロセス(親と子)が同じテキストファイルを表示して作業できますか?
これを行いましたが、両方のプロセスでファイルを開くにはfopen()を使用する必要があります。私の期待は、プロセスの1つがファイルを開き、他のプロセスがそれを見て操作できることです。
ベストアンサー1
~からfork(2)
手動私のOpenBSDシステムで(ハイライト):
子プロセスには、親プロセス記述子の独自のコピーがあります。これらの記述子は同じ基本オブジェクトを参照するため、たとえば次のようになります。ファイルオブジェクトのファイルポインタは、子と親の間で共有されます。
lseek(2)
、子プロセスの記述子が後続read(2)
またはwrite(2)
親プロセス記述子に影響を与える可能性があります。さらに、シェルはこの記述子のコピーを使用して標準入力と出力を設定し、新しく作成されたプロセスのパイプを設定します。
これは、子プロセスをフォークする前に親プロセスでファイルを開くと、両方のプロセスが同じファイルを開くことを意味します。ただし、子プロセスがファイルを読み取ると、親プロセスのファイルポインタも移動されます。
両方のプロセスでファイルにアクセスする独立して、両方のプロセスでファイルを開く必要があります。
親からファイルを開くと後ろに呼び出すfork()
と、子プロセスで開かず、その逆も同様です。