[OT?] Tying a socket to stdin/stdout w/dup2() ?

Chris Pressey cpressey at catseye.mine.nu
Fri Nov 7 13:03:42 PST 2003


On Fri, 7 Nov 2003 12:35:55 -0500
Charles Swiger <cswiger at mac.com> wrote:

> On Nov 7, 2003, at 12:19 PM, Chris Pressey wrote:
> > I've got a C program that opens a TCP/IP socket and makes a client
> > connection.  What I'd like to do is to 'tie' the socket to this
> > program's standard I/O, so that anything that is fed into this 
> > program's
> > stdin, is immediately sent to the socket, and anything that appears
> > on the socket, is immediately sent out this program's stdout.  (The
> > end effect being a sort of pathologically simple version of what
> > telnet,(or inetd or ucspi-tcp) does.)
> 
> Take a look at netcat, from /usr/ports/net/netcat.

Ahh great, now I'm blind!  :)

Seriously - it seems to confirm that I was confused.  Looks like you can
either:

a) dup the socket to stdin/out, then exec a program (a la inetd); or
b) keep stdin/out and the socket, and multiplex between them (telnet).

Since I want my program to act as a pipe source/sink, rather than
exec-ing something else, I'll have to go with b), which means I'll have
to face the select(2) music.

Anyway, thanks for the pointer...

-Chris


More information about the freebsd-questions mailing list