#include <stdio.h>
#include <unistd.h>

// deve invocar este programa com 2 argumentos na linha de comando
// exemplo: programa who wc
#define Read  0
#define Write 1
main(int argc, char *argv[])
{
  int fd[2];

  pipe(fd);
  if (fork() == 0) { /* filho */
    close(fd[Write]);
    dup2(fd[Read], 0); // redireciona input
    close(fd[Read]);
    execlp(argv[2], argv[2], NULL);
    perror("ligação não sucedida");
  }
  else { /* pai */
    close(fd[Read]);
    dup2(fd[Write], 1); // redireciona output
    close(fd[Write]);
    execlp(argv[1], argv[1], NULL);
    perror("ligação não sucedida");
  }
}
