バックグラウンドジョブを開始して、その終了を待たないでCGIの処理を終了する

問題。
普通に、PerlCGIスクリプト

 system( 'some_command &' );
 exit;

とか書けば、裏で some_command が実行されつつ、ブラウザ側からはCGI処理が完了したように見えるんじゃね、と思ったが、なぜか some_command の実行終了まで待たされた。

原因。
some_command の標準出力は元のPerlスクリプトの標準出力と一緒にCGIの出力として扱われるので、元のPerlスクリプトが終了してもCGI出力は閉じてない。some_commandの実行終了時に hoge とでも出力したらそれもCGIの出力として扱われてブラウザに出る。

対処。
some_command の標準出力を別の所にリダイレクトしたら、実行終了を待たなくなった。
たぶん標準出力を閉じても同じようにできるんじゃないだろうか。

 system( 'some_command > /dev/null &' );
 exit;