1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda em programação C de FIFO's (chat)

Discussão em 'Programação' iniciada por NHP, 30 de Novembro de 2008. (Respostas: 2; Visualizações: 646)

  1. NHP

    NHP

    Boas pessoal

    alguém pode me dar uma ajuda na criação de um programa C que sirva de chat com FIFO's?


    Obrigada!




    A organização do código fica da seguinte forma para cada um dos processos:

    #include pthread.h

    int main (int argc, char *argv[])
    {
    int read_fd, write_fd;
    pthread_t thread;


    // Testar a existência dos argumentos que indicam o pathname dos FIFO's
    // Caso não existam, imprimir mensagem e sair

    // Realizar a abertura dos FIFO's no modo leitura ou escrita
    // Um dos processos abre um FIFO1 em leitura e o FIFO2 em escrita
    // E o outro processo faz o inverso

    read_fd = open (argv[1], O_RDONLY);
    write_fd = open (argv[2], O_WRONLY);

    // Testar o valor de retorno e em caso de erro, imprimi-lo e sair

    // Criação de uma thread para leitura do FIFO passando o descritor como parâmetro

    pthread_create (thread, NULL, (void *) &readFIFO, (void *) read_fd);

    // Continuação da main thread:
    // Entrar num ciclo de leitura de linhas do standard input:
    // Imprimir um prompt (p.ex: $) de identificação anunciando a disponibilidade da
    // aceitação de caracteres

    // Ler o standard input

    // Contar o número de bytes lidos.
    // Se o número de bytes lidos for positivo, escrevê-los no FIFO de escrita

    // Quando o ciclo acabar, fechar os FIFO's e sair

    }

    void readFIFO ( int read_fd)
    {

    // Entrar num ciclo de leitura:
    // Ler a partir do FIFO de leitura

    // Testar o número de bytes lidos
    // Se o número de bytes lidos for positivo, escrevê-los no standard output,
    // precedidos por um identificador.

    // Qdo for detectado um caracter de fim de comunicação ( EOF = Control-D) terminar
    //thread

    }



    Basicamente é no preenchimento deste programa que preciso de ajuda, porque como ele funciona é fácil de entender...difícil pra mim é completá-lo.

    Agradeço opiniões e ajuda. ;):o
     
    Última edição: 1 de Dezembro de 2008
  2. Baderous

    Baderous Banido

    Isso será um programa em que as mensagens (estruturas que contém vários dados como a identificação dos vários intervenientes, a data/hora, mensagem) serão colocadas em filas de espera (queues), que são do tipo FIFO (First In First Out).
     
  3. NHP

    NHP

    o programa...

    A organização do código fica da seguinte forma para cada um dos processos:

    #include pthread.h

    int main (int argc, char *argv[])
    {
    int read_fd, write_fd;
    pthread_t thread;


    // Testar a existência dos argumentos que indicam o pathname dos FIFO's
    // Caso não existam, imprimir mensagem e sair

    // Realizar a abertura dos FIFO's no modo leitura ou escrita
    // Um dos processos abre um FIFO1 em leitura e o FIFO2 em escrita
    // E o outro processo faz o inverso

    read_fd = open (argv[1], O_RDONLY);
    write_fd = open (argv[2], O_WRONLY);

    // Testar o valor de retorno e em caso de erro, imprimi-lo e sair

    // Criação de uma thread para leitura do FIFO passando o descritor como parâmetro

    pthread_create (thread, NULL, (void *) &readFIFO, (void *) read_fd);

    // Continuação da main thread:
    // Entrar num ciclo de leitura de linhas do standard input:
    // Imprimir um prompt (p.ex: $) de identificação anunciando a disponibilidade da
    // aceitação de caracteres

    // Ler o standard input

    // Contar o número de bytes lidos.
    // Se o número de bytes lidos for positivo, escrevê-los no FIFO de escrita

    // Quando o ciclo acabar, fechar os FIFO's e sair

    }

    void readFIFO ( int read_fd)
    {

    // Entrar num ciclo de leitura:
    // Ler a partir do FIFO de leitura

    // Testar o número de bytes lidos
    // Se o número de bytes lidos for positivo, escrevê-los no standard output,
    // precedidos por um identificador.

    // Qdo for detectado um caracter de fim de comunicação ( EOF = Control-D) terminar
    //thread

    }



    Basicamente é no preenchimento deste programa que preciso de ajuda, porque como ele funciona é fácil de entender...difícil pra mim é completá-lo.

    Agradeço opiniões e ajuda. ;):o
     

Partilhar esta Página