首页 > 解决方案 > 使用管道的 IPC,ABC

问题描述

有一个过程称为A,B,C。

我想要 A->B->C

A:父进程 B:子进​​程 c:孙进程

打开A中的文本文件

打开文本文件并将其移动到 A 到 B 到 C。从 C 输出。

但是,没有输出结果出现。

有什么问题?

int main(int argc, char *argv[])
pwstream=fdopen(ppipe[1],"w");
prstream=fdopen(ppipe[0],"r");              
pid_t pid;
pid_t qpid;
pid=fork();
if(pid>0){              //parent
      fclose(prstream);
      while(!stat){
          if(fgets(line,BUFFER_SIZE,fpin)){
              fputs(line,pwstream);   //to pipe
          }
          else{
              stat=feof(fpin);
          }
      }
      fclose(fpin);
      fclose(pwstream);
      wait(&status);
     qpid=fork();
      if(qpid>0){  //grandchild
          fclose(pwstream);
          printf("grand chlid\n");
          while(!stat){
            if(fgets(line,BUFFER_SIZE,prstream)){
                 fputs(line,stdout);
             }
          }
          fclose(prstream);
      }
  }
  else if(pid==0){  //child
             
              while(!stat){
                  if(fgets(line,BUFFER_SIZE,prstream)){
                      for(int i=0;line[i];i++){
                          line[i]=toupper(line[i]);
                     }
                     fputs(line,pwstream);
                 }
                 else{
                      stat=feof(prstream);
                 }
              }
              fclose(prstream);
              fclose(pwstream);
              printf("bye\n");
             exit(22);
  }
  else{
      printf("error\n");
 }

  return 0;

标签: processpipefork

解决方案


推荐阅读