2

C で Unix シェルを作成しており、入力と出力のリダイレクトを実装しようとしています。私はこれに 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);
4

1 に答える 1

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

完了したら、stdin と stdout の所有者に戻ることができます。

int stdinHolder = dup(1);
int stdoutHolder = dup(0);
close(0);
close(1);
于 2013-07-08T02:24:18.573 に答える