我正在用 C 语言编写一个 Shell。用户应该能够执行各种命令并使用管道(|)将一个命令的输入重定向到另一个命令。主 shell 进程是父进程,并为每个命令派生新进程,在子进程中,该命令由 exec*() 函数调用。
但我不知道如何将一个子进程的标准输入/输出重定向到另一个子进程。
也许这可以帮助你....
int f=open(somefile, O_WRONLY | O_CREAT, S_IRWXU);
dup2(f,1); //redirecting output to file
//execute your first command here using fork
close(f);
int f=open(somefile, O_RDONLY | O_CREAT, S_IRWXU);
dup2(f,0); //this will give the ouput of the first command to stdout
//i.e. the input is present for second one
//execute your second command here
close(f);