一个进程充当读端,一个进程充当写端
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main(int argc,char * argv[])
{
int pipefd[2];
pid_t cpid;//进程号
char buf;
if(argc!=2)
{
fprintf(stderr,"usage:%s<string>\n",argv[0]);
exit(EXIT_FAILURE);
}
if(pipe(pipefd)==-1)
{
perror("pipe");
exit(EXIT_FAILURE);
}
cpid=fork();//创建子进程,并且获得子进程的进程号
if(cpid==-1)
{
perror("fork");
exit(EXIT_FAILURE);
}
if(cpid==0)//子进程中
{
close(pipefd[1]);//关闭写端
while(read(pipefd[0],&buf,1)>0)//这种方法不高效
{
write(STDOUT_FILENO,&buf,1);
}
write(STDOUT_FILENO,"\n",1);
close(pipefd[0]);
exit(EXIT_SUCCESS);
}
else//父进程中
{
FILE * fp=NULL;//创建文件流变量
char file_src[100];//保存完整文件名
sprintf(file_src,"%s%s%s",getenv("HOME"),"/linux/cproject/",argv[1]);//文件名拼接
printf("