Re: /proc/net/ip_conntrack problems

Mike Fedyk (mfedyk@matchmail.com)
Mon, 29 Oct 2001 13:19:16 -0800


On Sun, Oct 28, 2001 at 10:36:51PM -0600, Taral wrote:
> On Mon, Oct 29, 2001 at 03:27:52PM +1100, Keith Owens wrote:
> > Some /proc output is blocked, it will only return complete lines. If
> > your buffer is not big enough to hold the next line then you don't get
> > anything at all. Try cat /proc/net/ip_conntrack | wc.
>
> So why are 2 lines missing when I change the blocking factor from 256 to
> 512? Even cat reads in 16k blocks... Also:
>
> % dd if=/proc/net/ip_conntrack bs=512 | perl -ne 'print length()."\n"'
> 0+2 records in
> 0+2 records out
> 153
> 138
> 169
> 151
> 167
> 139
>
> No line is longer than 256 chars, so why are 2 lines missing when I read
> in 256 byte blocks?
>

Because you would need the buffer size to hit the moving target of any of
the boundaries of the lines. So you would need (for the example above)
buffer sizes of:
153
291
460
611
778
778

16k blocks would hold all of those...

IIRC, proc files have trouble returning output larget than one page (4k)...

Mike
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/