Subject: Re: netstat and PIDs
To: der Mouse <mouse@Holo.Rodents.Montreal.QC.CA>
From: Darren Reed <darrenr@arbld.unimelb.edu.au>
List: current-users
Date: 09/13/1996 11:12:48
In some email I received from der Mouse, sie wrote:
>
> >> I imagine the kernel must store this info somewhere since it has to
> >> deliver packets to said process - I guess via the descriptor
> >> table[s].
>
> > The kernel doesn't store this information, because it doesn't need it
> > during normal operation. The kernel doesn't deliver the packets to a
> > process. The packets get "delivered" to a socketbuffer which hangs
> > [off] the vnode. The first process to read from that vnode [gets]
> > the requested packets.
>
> Well, there does have to be _some_ link between the two, because a
> process that's blocked in a read or recvfrom on that socket will be
> awakened by arriving data. But that's probably not useful, because the
> only link between the two is (probably - I haven't specifically looked)
> a sleep/wakeup location pair, which if you wanted to take advatange of
> it would require walking the sleeping process chains. Probably easier
> to scan the open file tables.
If you want to associate pid's with network connections, why not use lsof
or similar ?
looking for the matching vnode pointer in the fd table is not what I'd
call an efficient approach to solving the problem.