何か下準備をしたり環境変数などに変更を加えてから指定したコマンドを起動するプログラムはたくさんある。bundle exec や npx, uv run や、拙作でも envchain などがそのようなプログラムの例だと思う。このようなプログラムは世間では executor と呼ばれているような気がするので、ここでもそう呼ぶことにする。 executor を最近あたらしく書いていて、ただそこでは指定されたコマンドを起動するだけではなく、そのコマンドのためのサーバーを裏で実行し続ける必要があり、ちょっとした工夫が必要だったのでメモ。 (なお、executor に指定されたコマンド = ユーザーや executor の親プロセスが最終的に起動を期待しているプログラムについては以後 command と表記) tl;dr executor が command の子プロセスになるようにする。execu