socketexec is a program that sets up a socket, then execs a program that inherits that socket on an open file descriptor. You can set up just about any kind of socket.

For example, you could have socketexec listen on a TCP port and when a client connects to that port, exec a server program that expects a connected socket as its Standard Input.

The point of this is to get away from the Unix tradition of having every server program or other socket-using program duplicate the socket function. socketexec can be the only program in your system that knows about sockets, so that you don't have to learn different command options for different programs, worry about a particular program getting it wrong, or suffer with unimplemented functions. When you write a new socket-using program, you don't have to write any socket code, and you have the full range of socket functions available.

Another advantage of doing the socket setup in a separate program is security: you can have socketexec run with enough privilege to bind a reserved port number (typically superuser), then exec a server program with no privilege. That way, you don't have to worry about bugs in the server program exploiting its privilege.

For more information, see the manual.

You can download the code from here.

The current release is 1.06, released in March 2011.

socketexec is distributed and maintained by Bryan Henderson (