On Tue, Mar 19, 2013 at 4:19 PM, Nicholas Marriott
<nicholas.marri...@gmail.com> wrote:
> Ok thanks. My only concern is sharing the same fd for stdin and stdout -
> what happens if the copy-pipe command prints something?

On my system (Mac OS X 10.8.3, which is supposed to be similar to
BSD systems), having the copy-pipe command write to its stdout works
okay. The output ends up in the job->event->input buffer (I checked
with some debug code in job_free that prints out the "input" buffer
if it is not empty); the data sent by copy-pipe ends up on the
command's stdin as usual. The two directions do not appear mixed or
interleaved in any way. Do you expect something different might
happen on other systems?

My assumption is that socketpair() arranges the pair as if they had
gone through the regular process of bind/listen/accept and connect,
just without having to name one side. Thus, I expected that (even
after being duped) data written to the first could only be read form
the second, and vice versa (this appears to be what happens on my
system).

I found a couple of instances in the portable OpenSSH code where one
side of a socketpair() is duped to both stdin and stdout, but I also
noticed that several platforms opt to use a pair of pipe()s instead
of socketpair(). Many of these systems seem "old" to me, but HP-UX
stood out as one that tmux supports (also SunOS 4?).

The libevent docs say that bufferevent_new does not support pipe
fds, but I suppose we could use two socketpairs that have each been
shutdown to half duplex in opposite directions.

Alternatively, copy-pipe could be implemented as a new, write-only
job variant instead of the read-write approach that this minimal
implementation ends up with.

--
Chris

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to