souto Posted December 6, 2007 at 12:56 AM Report Share #152586 Posted December 6, 2007 at 12:56 AM Vivam, Ha alguma forma de sabermos se dois FILE streams pertencem a um mesmo ficheiro? Obrigado e cumprimentos. Link to comment Share on other sites More sharing options...
rgcaldas Posted December 6, 2007 at 01:11 AM Report Share #152589 Posted December 6, 2007 at 01:11 AM 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. Link to comment Share on other sites More sharing options...
souto Posted December 6, 2007 at 01:17 AM Author Report Share #152591 Posted December 6, 2007 at 01:17 AM Ja tentei isso, nao da 👍 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. Link to comment Share on other sites More sharing options...
rgcaldas Posted December 6, 2007 at 02:01 AM Report Share #152593 Posted December 6, 2007 at 02:01 AM Ja tentei isso, nao da 👍 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 Link to comment Share on other sites More sharing options...
souto Posted December 6, 2007 at 02:22 AM Author Report Share #152596 Posted December 6, 2007 at 02:22 AM 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. Link to comment Share on other sites More sharing options...
TheDark Posted December 6, 2007 at 03:16 AM Report Share #152598 Posted December 6, 2007 at 03:16 AM 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. Desaparecido. Link to comment Share on other sites More sharing options...
rgcaldas Posted December 6, 2007 at 09:00 AM Report Share #152608 Posted December 6, 2007 at 09:00 AM 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 Link to comment Share on other sites More sharing options...
souto Posted December 6, 2007 at 11:01 AM Author Report Share #152624 Posted December 6, 2007 at 11:01 AM Obrigado pelas respostas. Optei pela solucao juntamente com o nome do ficheiro. Cumprimentos. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now