Использование Dup2 для перенаправления ввода и вывода

Я писал оболочку Unix на C, и я пытаюсь реализовать перенаправление ввода и вывода. Я использовал Dup2 для этого и могу сделать так, чтобы мой вывод перенаправлялся в файл, и мой ввод также перенаправлялся правильно. Тем не менее, после того, как я закончу с этим, как мне вернуться к использованию Stdin и Stdout снова?

Это фрагменты кода, которые я запускаю, когда требуется перенаправление:

В:

inFile = open(tok.infile, O_RDONLY, 0);
inDup = dup2(inFile, STDIN_FILENO);
close(inFile);

Из:

outFile = creat(tok.outfile, 0644);
outDup = dup2(outFile, STDOUT_FILENO);
close(outFile);

1 ответ

int stdinHolder = dup(0);
int stdoutHolder = dup(1);
close(0);
close(1);

После того, как вы закончите, вы можете вернуться к держателям стандартного ввода и вывода.

int stdinHolder = dup(1);
int stdoutHolder = dup(0);
close(0);
close(1);
Другие вопросы по тегам