ヒアドキュメントの実装 その 2
結局、ヒアドキュメントの内容が PIPE_BUF バイト以内ならパイプ、それ以上なら一時ファイルを使うことにした。
一時ファイルは、作成した瞬間に削除するのが味噌。POSIX 準拠システムでは、ファイルをファイルシステムから削除してもプログラムがファイルを開いている限りはファイルは消えないし、読み書きだってできる。ファイルシステムから削除することによって、そのファイルはファイルを開いているプログラム自身からしか扱えなくなるので、他のプログラムに余計なちょっかいを出される心配はなくなる。もっとも、作成してから削除するまでの僅かな時間の間に他のプログラムにいじられる虞がないわけではないが。
注: ファイルシステムから削除したら絶対に他のプログラムから開けなくなるのかというとそうでもない。例えば Linux には /proc/プロセス番号/fd というディレクトリがあって云云。
| 固定リンク
コメント