Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

souto

Comparar FILE streams.

Mensagens Recomendadas

rgcaldas    0
rgcaldas

Que eu saiba podes comparar directamente (file1==file2) o que vai comparar é o file descriptor, não dá para ver se o conteúdo de dois ficheiros é o mesmo.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
souto    0
souto

Ja tentei isso, nao da :thumbsup:

O codigo que usei foi este:

	
FILE* f1 = fopen("relatorio.odt","rb");
FILE* f2 = fopen("relatorio.odt","rb");
if (f1 == f2)
  printf("bla\n");

Obrigado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rgcaldas    0
rgcaldas

Ja tentei isso, nao da :thumbsup:

O codigo que usei foi este:

	
FILE* f1 = fopen("relatorio.odt","rb");
FILE* f2 = fopen("relatorio.odt","rb");
if (f1 == f2)
  printf("bla\n");

Obrigado.

Pois mas ai acho que crias dois descritores diferentes, por exemplo isto:



void teste(FILE* file){

  if (file == stdout)
    fprintf(file,"stdout\n");
  else
     fprintf(stdout,"outro ficheiro\n");
}

int main(void){

FILE* file;

  FILE* f1 = fopen("relatorio.odt","rb");
  teste(f1);
  teste(stdout);


}

Deve funcionar

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
souto    0
souto

Sim, mas o que quero mesmo e algo parecido com o que esta no meu exemplo. Eu crio um descritor, e algum tempo depois, durante a execucao, existe a possibilidade de ser criado outro descritor que pode pertencer ao mesmo ficheiro. O que gostava de saber e se e possivel averiguar se dois descritores sao respectivos ao mesmo ficheiro.

Obrigado pelas respostas ate agora.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

Penso que o que pedes não é possível. Podes no entanto contornar a limitação associando a cada um dos ficheiros abertos uma string com o nome do ficheiro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rgcaldas    0
rgcaldas

Nunca experimentei mas um busca no google levou a isto

http://www.gnu.org/software/libc/manual/html_node/Control-Operations.html#Control-Operations

Parece que podes pedir um lock ao ficheiro com a função fcntl (int filedes, int command, ...) com o comando F_GETLK, isso deve impedir que o abras novamente, depois é só uma questão de gerires o erro da fopen()

É uma questão de experimentares

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade