Использование 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);