• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

exavier

Ajuda urgente sobre FIFO

1 mensagem neste tópico

Olá pessoal estou com dificuldades de em passar ficheiros através do FIFO de um terminal para outro! Só consigo escrever num terminal e aparecer o que escrevo no outro terminal. Mas o que eu quero é abrir ficheiros num terminal e através do FIFO aparecer o que abro num terminal noutro terminal. Este trabalho é para entregar Sexta feira:( Alguém me ajuda???

Resumindo o objectivo do trabalho é simular 1 impressora, onde o 2º terminal faz de imoressora e a primeira é quem dá a ordem para imprimir, tipo $ print ficheiro1.txt ficheiro2.txt...

O meu código:

fiforeader.c

#include   <sys/stat.h>
#include   <unistd.h>
#define FIFO_NAME "american_maid"
int main(void)
{
    char s[300];
    int num, fd;
    mknod(FIFO_NAME, S_IFIFO | 0666, 0);
    printf("estou a espera do write...\n");
    fd = open(FIFO_NAME, O_RDONLY);
    printf("estou conectado com o write\n");
    do {
         if ((num = read(fd, s, 300)) == -1)
              perror("read");
         else {
              s[num] = '\0';
              printf("tick: read %d bytes: \"%s\"\n", num, s);
         }
    } while (num > 0);
    return 0;
}

fifowrite.c

#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#define FIFO_NAME "american_maid"
int main(void)
{
    char s[300];
    int num, fd;
    mknod(FIFO_NAME, S_IFIFO | 0666, 0);
    printf("estou a espera do readers...\n");
    fd = open(FIFO_NAME, O_WRONLY);
    printf("estou conectado com o reader...\n")
    while (gets(s), !feof(stdin)) {
      if ((num = write(fd, s, strlen(s))) == -1)
          perror("write");
      else
          printf("speak: wrote %d bytes\n", num);
  }
  return 0;
}

Obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora