私がそうするなら:
dup2(0, backup); // backup stdin
dup2(somefile, 0); // somefile has four lines of content
fgets(...stdin); // consume one line
fgets(....stdin); // consume two lines
dup2(backup, 0); // switch stdin back to keyboard
私はこの時点で見つけています..標準入力には、まだ消費していない2行が含まれています。何故ですか?何度リダイレクトしてもバッファが1つしかないから?残りの 2 行を取り除くにはどうすればよいですか?