Re: more pipe questions
- From: Helmethead <hoshem mel comcen com au>
- To: Ronald Bultje <rbultje ronald bitfreak net>
- Cc: gtk-list gnome org
- Subject: Re: more pipe questions
- Date: Thu, 15 Feb 2001 15:29:41 +1100
On Thu, Feb 15, 2001 at 02:53:02AM +0100, Ronald Bultje wrote:
> I remember this question being asked before, but deleted it, I think...
>
> If I write data to a file (continuously, a logfile kinda thing), how can I
> check this file for "being updated"? I now use a read-pipe and popen("cat
> file", "r"); but there's probably a better way.
>
> Or is it maybe possible to open this logfile "continuously" so that any
> data written to it can be caught at once?
>
> Besides that, if I put this popen("cat file", "r"); in a while-loop, my
> tasklist shows a [cat <defunc>] and the program stops there...... Any clue
> why?
>
Why it's getting zombies (defunct processes) would be because you are not calling pclose() on each file handle. And if you want to use popen to do this, call tail -0f not cat. any updates to the file will be immediately printed with that command.
eg.
FILE *fp;
if (!(fp = popen ("tail -0f filename", "r")))
{
perror ("popen() failed");
exit (1);
}
printf ("Watching filename for new data\n\n");
for (;;) /* infinite loop */
{
char buff[80];
if (fgets (buff, 79, fp) == NULL)
{
if (feof (fp))
fprintf (stderr, "tail closed\n");
if (ferror (fp))
perror ("fgets() failed");
exit (1);
}
printf ("line appended to file filename: %s\n", buff);
}
yeah, gtk-ize all that.
> Ronald
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]