[C] Linux: stdout in pipe umleiten

plonk

Mitglied
Hallo zusammen!

Folgendes Problem:
Ich habe mit
Code:
pipe(fd);
eine pipe zwischen zwei Prozessen erstellt. Nun möchte ich gerne stdout von Prozess A durch die pipe zu Prozess B schicken. Zuerst wollte ich die Ausgabe
Code:
freopen(fd[0], "w", stdout);
umlenken, aber freopen kann nicht mit Filedeskriptoren umgehen.

Hat jemand ne Ahnung, was man da machen kann?

thx,
plonk
 
Ok, hier der entscheidene Auszug aus meinem Prog:
Code:
pipe(fd);
         
pid1 = fork();
         
switch(pid1) 
{
    case -1: printf("\nFehler bei fork\n");
                   errorcode = -1;
	            break;
	 
    case 0:  if(dup2(fd[1], STDOUT_FILENO) == -1)
                        perror("dup-Fehler");
                   else if((close(fd[0])==-1) ||(close(fd[1])==-1))
                        perror("pipe-Fehler");
                    else
                    {                                      
                          errorcode = execvp(argv1[0], argv1);
                          exit(0);
                     }
	             break;
                  
    default: errorcode = 0;
                   break;
}
         
          
pid2 = fork();
switch(pid2) 
{
    case -1: printf("\nFehler bei fork\n");
                    break;

    case 0:  if(dup2(fd[0], STDIN_FILENO) == -1)
                        perror("dup-Fehler");
                    else if((close(fd[0])==-1) || (close(fd[1])==-1))
                        perror("pipe-Fehler");
                    else
                    {                   
                           errorcode = execvp(argv2[0], argv2);
                           exit(0);
                    }
                      
                    exit(0);
	            break;
                  
    default: errorcode = 0;
                   break;
}
 
Zurück