dup2でstdinを繋ぎ変えたらrewindしておくこと

close(STDIN_FILENO);
dup2(fileno(my_stdin), STDIN_FILENO);
flose(my_stdin);

みたいにすればFILE *my_stdinstdinとして使うことができるけど、この処理以前にstdinがEOFに達していた場合には、たとえmy_stdinがopenしたばかりだとしてもEOFになってしまう。

なので、上記のあとにrewindしてstdinのカーソルを先頭にもどしてあげる。

rewind(my_stdin);