Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Nov 2003 13:06:15 -0800
From:      Chris Pressey <cpressey@catseye.mine.nu>
To:        Charles Swiger <cswiger@mac.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: [OT?] Tying a socket to stdin/stdout w/dup2() ?
Message-ID:  <20031107130615.1824d783.cpressey@catseye.mine.nu>
In-Reply-To: <D7649704-1148-11D8-AD24-003065ABFD92@mac.com>
References:  <20031107091909.6d2a0acc.cpressey@catseye.mine.nu> <D7649704-1148-11D8-AD24-003065ABFD92@mac.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 7 Nov 2003 12:35:55 -0500
Charles Swiger <cswiger@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031107130615.1824d783.cpressey>