ncurses, read - little problem :)

0

#include <stdio.h>
#include <ncurses.h>
#include <fcntl.h>

#define BUFFSIZE 4096
#define LOGFILE "plik.txt"

main()
{

int file_fd;
int a;
char buff[BUFFSIZE];
        file_fd = open(LOGFILE,O_RDONLY);

WINDOW *ok = initscr();
scrollok(ok,1);		    

while(1){		
	    
	    for ( a = 0; a < BUFFSIZE; a++ ) buff[a] =  \ 0;
	    if((read(file_fd,buff,sizeof(buff))) < 0 ) {
		endwin(); return 1;
	    }
	    refresh();
	    printw("[logfile] %s", buff);

}

endwin();

}

Jak zrobic zeby gdy odpalam program, to jak wyswietla mi zawartosc LOGFILE, i gdy ona dobiegnie konca, to wyswietla mi tylko non stop:
[ logfile ][ logfile ][ logfile ] itd, bez konca, jak to poprawic, zeby to sie nie dzialo ? :)

thx

0

if((read(file_fd,buff,sizeof(buff))) == 0 )

0

zrobiłem tak:

if((read(LOGFILE,buff,sizeof(buff))) == 0 )
refresh(); printw("[logfile] %s", buff);

cóz i dalej to samo, jak skonczy sie zawartosc pliku, to na ekranie
wywala tylko: [logfile][logfile][logfile].. itd :/

0

Nie mowilem zebys cos wiecej zmienial poza tym co napisalem !!!!
Bo reszta jest OK. Pozostaw wszystko tak jak bylo w pierwszym poscie i zmien tylko if !!!! read zwraca 0 gdy juz nie ma nic do czytania.

0

no to tak zrobilem, patrz:

#include <stdio.h>
#include <ncurses.h>
#include <fcntl.h>

#define BUFFSIZE 4096
#define LOGFILE "plik.txt"

main()
{

int file_fd;
int a;

char buff[BUFFSIZE];

 file_fd = open(LOGFILE,O_RDONLY);

WINDOW *ok = initscr();
scrollok(ok,1);

while(1)
{
for ( a = 0; a < BUFFSIZE; a++ ) buff[a] =  \ 0;
if((read(file_fd,buff,sizeof(buff))) == 0 ) 
    refresh(); printw("[logfile] %s", buff);

}

endwin();
}

i dalej ten sam blad.. tj problem co wyzej ;/

0

[code]
#include <stdio.h>
#include <ncurses.h>
#include <fcntl.h>

#define BUFFSIZE 4096
#define LOGFILE "plik.txt"

main()
{

int file_fd;
int a;
char buff[BUFFSIZE];
    file_fd = open(LOGFILE,O_RDONLY);

WINDOW *ok = initscr();
scrollok(ok,1);    

while(1){

for ( a = 0; a < BUFFSIZE; a++ ) buff[a] =  \ 0;
if((read(file_fd,buff,sizeof(buff))) < 0 ) {

endwin(); return 1;
}
refresh();
printw("[logfile] %s", buff);

}
endwin();

}
[/code]
.... czlowieku to jest wersja twojego progsa z pierwszego posta i w niej zmien w ifie < na == i bedzie wszystko gralo !!!! Nic wiecej nie zmieniaj bo tylko pogarszasz sprawe :-[

1 użytkowników online, w tym zalogowanych: 0, gości: 1