#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
int main()
{
int sv, fd[2], infile, outfile;
char *file;
pipe(fd);//创建管道
file="/etc/passwd";
infile=open(file, O_RDONLY);
file="result.txt";
outfile=open(file, O_CREAT|O_WRONLY);//打开文件
if(fork()==0)
{
dup2(infile, 0);//输入重定向,现在infile中内容即为标准输入流的内容
dup2(fd[1], 1);//fd[1]写端,为屏幕标准输出流
close(fd[1]);
close(fd[0]);
execlp("grep", "grep", "-v", "usr", 0);//系统调用grep命令搜索
}
else if(fork()==0)
{
dup2(fd[0], 0);//上个命令的结果已写入fd[0],将其重定向到标准输入流
dup2(outfile, 1);//输出重定向到指定目标文件中
close(fd[1]);
close(fd[0]);
execlp("wc", "wc", "-l", 0);//系统调用
}
close(fd[1]);
close(fd[0]);//关闭流
wait(&sv);
wait(&sv);//等待子程序结束后返回。
return 0;
}
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
int main()
{
int sv, fd[2], infile, outfile;
char *file;
pipe(fd);//创建管道
file="/etc/passwd";
infile=open(file, O_RDONLY);
file="result.txt";
outfile=open(file, O_CREAT|O_WRONLY);//打开文件
if(fork()==0)
{
dup2(infile, 0);//输入重定向,现在infile中内容即为标准输入流的内容
dup2(fd[1], 1);//fd[1]写端,为屏幕标准输出流
close(fd[1]);
close(fd[0]);
execlp("grep", "grep", "-v", "usr", 0);//系统调用grep命令搜索
}
else if(fork()==0)
{
dup2(fd[0], 0);//上个命令的结果已写入fd[0],将其重定向到标准输入流
dup2(outfile, 1);//输出重定向到指定目标文件中
close(fd[1]);
close(fd[0]);
execlp("wc", "wc", "-l", 0);//系统调用
}
close(fd[1]);
close(fd[0]);//关闭流
wait(&sv);
wait(&sv);//等待子程序结束后返回。
return 0;
}