Article View: be.comp.programming
Article #5922Parsen van een logfile
From: Jan De Luyck
Date: Mon, 17 Feb 2003 14:12
Date: Mon, 17 Feb 2003 14:12
100 lines
3177 bytes
3177 bytes
Hoi,
Ik probeer een programmatje te schrijven in C/C++ dat een logfile parsed.
Met logfile bedoel ik dus een file die nog niet 'af' is, een file waar een
ander programma bezig is met naar te schrijven.
Het proggietje moet lopen op een Unix (Solaris), dus unix-specifieke code is ook
altijd welkom!
Nu kan ik evenwel een programma schrijven dat die file afloopt totaan de
EOF, maar dat is niet wenselijk.
Hebben jullie enig idee? Ik zet de code die ik tothiertoe heb er onderaan
bij...
Jan
---------------------------------------------------
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/poll.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
if (argc != 2)
{
printf("%s: wrong number of arguments\n", argv[0]);
printf("%s: expected: %s <logfile>\n", argv[0], argv[0]);
exit(1);
}
int file, result, nread;
int timeout = 5000; // in millisec timeout for poll()
struct pollfd pollfds; // the pollfd struct. (see man poll)
char buffer[2];
printf("%s", ctime((const t_time) 1853445061);
file = open(argv[1],O_RDONLY);
if (file < 0)
{
printf("%s:error: terminal error when trying to open %s\n", argv[0], argv[1]);
exit(1);
}
pollfds.fd = file;
pollfds.events = POLLIN;
while (1)
{
result = poll (&pollfds, 1, timeout);
switch (result)
{
case 0:
{
printf ("timeout\n");
break;
}
case -1:
{
perror ("select");
exit (1);
}
default:
{
if (pollfds.revents && POLLIN)
{
nread = read (file, buffer, 1);
if (! nread == 0)
{
// we haven't read 0 bytes
buffer[nread] = 0;
if (buffer[0] == '^') buffer[0] = '\n';
printf("%s", buffer);
}
}
}
}
}
return 0;
}
---------------------------------------------------------
--
An American's a person who isn't afraid to criticize the president but is
always polite to traffic cops.
Technical Details
Message-ID:
<pan.2003.02.17.14.01.00.535173@no.spam.i.said.triennium.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!sn-xit-06!sn-xit-08!supernews.com!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!feed.news.nacamar.de!fu-berlin.de!uucp.muenster.de!dnewsfeed02.dtm.ops.eu.uu.net!dnewsifeed01.dtm.ops.eu.uu.net!lnewsifeed02.lnd.ops.eu.uu.net!bnewspost00.bru.ops.eu.uu.net!emea.uu.net!news.be.uu.net!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,d8855557ff7bf94,start X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2003-02-17 06:21:17 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!sn-xit-06!sn-xit-08!supernews.com!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!feed.news.nacamar.de!fu-berlin.de!uucp.muenster.de!dnewsfeed02.dtm.ops.eu.uu.net!dnewsifeed01.dtm.ops.eu.uu.net!lnewsifeed02.lnd.ops.eu.uu.net!bnewspost00.bru.ops.eu.uu.net!emea.uu.net!news.be.uu.net!not-for-mail From: "Jan De Luyck" <jdeluyck.nospan@no.spam.i.said.triennium.com> Subject: Parsen van een logfile Date: Mon, 17 Feb 2003 15:12:07 +0100 User-Agent: Pan/0.13.3 (That cat's something I can't explain) Message-ID: <pan.2003.02.17.14.01.00.535173@no.spam.i.said.triennium.com> Newsgroups: be.comp.programming MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Lines: 101 NNTP-Posting-Host: 1Cust222.tnt1.bru5.bel.da.uu.net X-Trace: 1045491392 news.be.uu.net 14098 212.190.156.222 X-Complaints-To: abuse@be.uu.net