On Wed, 2005-11-30 at 13:34 -0500, Reuben D. Budiardja wrote: > On Wednesday 30 November 2005 12:54, STYMA, ROBERT E (ROBERT) wrote: > > > Hello, > > > I am playing around with writing a program to bind to socket > > > / port in my > > > machine. Often time, I got the message: > > > bind(): Address already in use > > > > > > So my question is, how do I find out which process bind to a > > > certain port > > > number ? > > > The command lsof run as root will tell you a lot of things including > > who is bound to a port. > > For example: > > lsof | grep 2345 > > Great. Thanks. > > > Note that on various flavors unix, I have seen the "already in use" message > > for a short time after a program exits. That is, start a program which > > listens on a certain port, exit the program, immediately restart the > > program. A quick test says FC4 does not seem to do this. > > The reason I am asking is because I am seeing exactly this on FC 4. It seems > that after exiting, the program does not release the port immediately, and > hence restarting the program get the "already in use" message, while 'ps aux > | grep progname' shows nothing. Maybe I am doing something wrong, ie. the > program does not release the port cleanly on exit or something like that ? > I'm not sure... > Is this an RPC client-server program? If it is, it's done intentionally so that any messages that may still float around have a destination to rest in peace. Use "select()" socket utility. It may mean a little extra programming, but it is really rewarding.