, , .
- ++ - . FILE *, fopen() fread() - , , , , .
POSIX open() read()/pread() C-. fstat(), , . fstat() st_size struct stat.
:
int logFileFD = open( "/some/file/name.log", O_RDONLY );
- ( ):
size_t lastSize = 0;
while ( !done )
{
struct stat statBuf;
fstat( logFileFD, &statBuf );
if ( statBuf.st_size == lastSize )
{
sleep( 1 );
continue;
}
processNewContents( logFileFD, lastSize, statBuf.st_size );
}
processNewContents() :
void processNewContents( int fd, size_t start, size_t end )
{
static char oldData[ BUFSIZE ];
static char newData[ BUFSIZE ];
ssize_t bytesRead = pread( fd, newData, start, end - start );
return;
}
, close(), open() , , , "" , . , - - -, ls , , . , , , 10-15 , 30 , - , , , .
inode struct stat, .
, POSIX, open(), fstat() pread() , Windows , . Windows lseek(), read() pread().