так что если я сделаю:
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
Я обнаружил, что в этом месте stdin все еще содержит две строки, которые я не употреблял. Это почему? Потому что есть только один буфер независимо от того, сколько раз вы перенаправляете? Как мне избавиться от двух оставшихся строк, но помнить, где я был в потоке somefile, когда я хочу вернуться к нему?