高津@ドーガです。

記事 <d0hmdp$1nc@utogw.gssm.otsuka.tsukuba.ac.jp> で
        kunoさんは書きました

>   0:X  1:Y  2:Z
> という対応づけになっているのを
>   0:Y  1:Z  2:X
> のように「番号を割り当て直したい」としますよね。

無駄にファイルディスクリプタを確保しない、という方針としては
パズルも楽しいですけど、

dup2を使って

fd0 = dup(0);
fd1 = dup(1);
fd2 = dup(2);   → 0:X  1:Y  2:Z  fd0:X  fd1:Y  fd2:Z
close(0);
close(1);
close(2);       → 0:-  1:-  2:-  fd0:X  fd1:Y  fd2:Z
dup2(fd1,0);
dup2(fd2,1);
dup2(fd0,2);    → 0:Y  1:Z  2:X  fd0:X  fd1:Y  fd2:Z
close(fd0);
close(fd1);
close(fd2);     → 0:Y  1:Z  2:X

という感じにするのはどうでしょうか?
わかりやすさを優先です。

PROJECT TEAM DoGA 高津正道                            taka2@doga.jp
                                                   TBD00456@nifty.ne.jp
                     PROJECT TEAM DoGAのホームページ → http://doga.jp/
3月8日(火) 今日のマーフィーの法則     [マックリスティーのコンピュータの公理]
バックアップファイルが、まともにとれていることはない。