pasasの日記: プログラム実行関数と自分用メモ
日記 by
pasas
未来の自分に向けたメモ。
qmail の設定で不思議に思ったことのひとつに「引数で指定したプログラムのディスクリプタ 3を使ってデータを渡す」というのがある。
(通常のインストールでは必要ないけど、qmail のツールのいくつかを自作のプログラムで置き換える場合には必要。)
これってどうやって実現するのだろうと思っていたけど、man を調べると execve() 関数などで実現できるらしい。
execve() 関数で呼び出されたプログラムは、呼び出したプロセスの PID とファイルディスクリプタを継承できるらしい。
というわけで pipe() でオープンしたディスクリプタに情報を書き込み、呼び出された側のプログラムで継承したディスクリプタからその情報を読み込めば OK。
でもなぜこのような方法を採用しているのかは不明。
安全なのかなぁ??