Voila, je bosse actuellement sur les fonctions pipe et dup.
J'ai déja utilisé les deux séparément et ai réussi à m'en servir jusque là correctement.

Actuellement j'essaye de cumuler les deux de manière à:
-Dupliquer la sortie standard vers l'entrée du pipe
-Dupliquer l'entrée standard vers la sortie du pipe
-Ecrire sur la sortie standard
-Lire sur la sortie standard

En gros je suis sensé, avec ce programme, écrire et lire réellement dans le pipe en écrivant et lisant sur la sortie standard.
Alors je n'ai aucun problème a la compilation, mais maintenant j'aimerai bien afficher ce qu'il y a dans le pipe et je sais plus du tout comment faire -_-'

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
 
int     main()
{
  int   pipefd[2];
  char  buf[512];
  int   len;
  int   error;
  char  *str;
  int   pid;
 
  str = "Tutu";
  error = pipe(pipefd);
  dup2(pipefd[1], 1);
  dup2(pipefd[0], 0);
  if (error == -1)
    write(2, "error on pipe\n", strlen("error on pipe\n"));
  if ((pid = fork()) == -1)
    write(2, "error on fork\n", strlen("error on fork\n"));
  if (pid > 0)
    write(1, str, strlen(str));
    if (pid == 0)
    {
      len = read(0, buf, 511);
      if (len == -1)
        {
          write(2, "error on read\n", strlen("error on read\n"));
          exit(EXIT_FAILURE);
        }
      buf[len] = '\0';
      write(1, buf, len);
    }
  return(EXIT_SUCCESS);
}
Je sais bien que ça doit être tout bête mais en fait le write(1, buf, len) de fin dois reécrire dans le pipe et je sais pas comment le réafficher, j'ai essayé plein de trucs mais y'a rien à faire ça m'affiche rien -_-