demasi@paisano.UUCP (Michael C. De Masi) (09/01/88)
Hi Wizards! This question is purely informational. The other day I got a little bored, so I started playing around with redirecting I/O streams from various programs to different windows on a 630MTG running layers. Eventually, I figured I'd try seeing how many windows I could get the same copy of vi running across. I did something to the effect of: (stty `cat vi.stty`;vi) < /dev/xt02 > /dev/xt03 while sitting in xt01. (vi.stty is just the stty options for vi) This allowed me to type into window 2, while having the output (which was completely correct) wind up in window three while vi was technically running in window 1. In fact, the only thing which did appear in window one were diagnostic messages, as I had not redirected the standard error at this point. So far, so good. I then tried the same command, but with a slight variation: (stty `cat vi.stty`;vi) < /dev/xt02 > /dev/xt03 2>/dev/xt04 Which I believed would have the effect of doing everything above with the only exception being the stderr would now go to a fourth window. It didn't work. The window to which the output of vi should go was no longer correct. In fact, it was all out of whack. This is where I get lost. Why should redirecting the stderr away from the window where the stdout goes affect vi so seriously, or for that matter, at all? At first I thought that the stdout & stderr somehow might combine to make the vi screen image, but that can't be right because of the first example (plus it's a lousy idea) That's what I _really_ find strange. If redirecting the stderr to another window messes up vi, then why doesn't redirecting the stdout? Either way, you wind up with the I/O streams directed to different places. What's the difference? I then tried another variation. I ran the second command again, only replacing the 'vi' with 'ksh'. This ran much as I'd expected (I never knew prompts were diagnostic) so I figured I'd try running vi in this environment. Guess what? It failed, same way as in example 2. Somehow, I feel the answer to this must be linked to one of the great truths of the universe which I have somehow failed to grasp. Anybody care to enlighten me? Awaiting your replies, Michael C. De Masi - AT&T Communications (For whom I work and not speak) 2340 Dulles Corner Blvd. Herndon, Virginia 22071 Phone: 703-834-8123 UUCP: decuac!grebyn!paisano!demasi "All things considered, I'd rather be in Philadelphia" - W C Fields
irene@pyr1.cs.ucl.ac.uk (09/02/88)
/* Written 7:12 pm Aug 31, 1988 by demasi@paisano.UUCP in pyr1.cs.ucl.ac.uk:comp.unix.wizards */ /* ---------- "Big fun with 'vi' & I/O redirection" ---------- */ Hi Wizards! This question is purely informational. The other day I got a little bored, so I started playing around with redirecting I/O streams from various programs to different windows on a 630MTG running layers. Eventually, I figured I'd try seeing how many windows I could get the same copy of vi running across. I did something to the effect of: (stty `cat vi.stty`;vi) < /dev/xt02 > /dev/xt03 while sitting in xt01. (vi.stty is just the stty options for vi) This allowed me to type into window 2, while having the output (which was completely correct) wind up in window three while vi was technically running in window 1. In fact, the only thing which did appear in window one were diagnostic messages, as I had not redirected the standard error at this point. So far, so good. I then tried the same command, but with a slight variation: (stty `cat vi.stty`;vi) < /dev/xt02 > /dev/xt03 2>/dev/xt04 Which I believed would have the effect of doing everything above with the only exception being the stderr would now go to a fourth window. It didn't work. The window to which the output of vi should go was no longer correct. In fact, it was all out of whack. This is where I get lost. Why should redirecting the stderr away from the window where the stdout goes affect vi so seriously, or for that matter, at all? At first I thought that the stdout & stderr somehow might combine to make the vi screen image, but that can't be right because of the first example (plus it's a lousy idea) That's what I _really_ find strange. If redirecting the stderr to another window messes up vi, then why doesn't redirecting the stdout? Either way, you wind up with the I/O streams directed to different places. What's the difference? I then tried another variation. I ran the second command again, only replacing the 'vi' with 'ksh'. This ran much as I'd expected (I never knew prompts were diagnostic) so I figured I'd try running vi in this environment. Guess what? It failed, same way as in example 2. Somehow, I feel the answer to this must be linked to one of the great truths of the universe which I have somehow failed to grasp. Anybody care to enlighten me? Awaiting your replies, Michael C. De Masi - AT&T Communications (For whom I work and not speak) 2340 Dulles Corner Blvd. Herndon, Virginia 22071 Phone: 703-834-8123 UUCP: decuac!grebyn!paisano!demasi "All things considered, I'd rather be in Philadelphia" - W C Fields /* End of text from pyr1.cs.ucl.ac.uk:comp.unix.wizards */
mercer@ncrcce.StPaul.NCR.COM (Dan Mercer) (09/03/88)
In article <520@paisano.UUCP> demasi@paisano.UUCP (Michael C. De Masi) writes:
:Hi Wizards!
:
:This question is purely informational. The other day I
:got a little bored, so I started playing around with
:redirecting I/O streams from various programs to different
:windows on a 630MTG running layers. Eventually, I figured
:I'd try seeing how many windows I could get the same copy
:of vi running across. I did something to the effect of:
:
: (stty `cat vi.stty`;vi) < /dev/xt02 > /dev/xt03
:
:while sitting in xt01. (vi.stty is just the stty options
:for vi) This allowed me to type into window 2, while having
:the output (which was completely correct) wind up in window
:three while vi was technically running in window 1. In
:fact, the only thing which did appear in window one were
:diagnostic messages, as I had not redirected the standard
:error at this point. So far, so good.
:
:I then tried the same command, but with a slight variation:
:
: (stty `cat vi.stty`;vi) < /dev/xt02 > /dev/xt03 2>/dev/xt04
:
:Which I believed would have the effect of doing everything
:above with the only exception being the stderr would now go
:to a fourth window. It didn't work. The window to which
:the output of vi should go was no longer correct. In fact,
:it was all out of whack. This is where I get lost.
:
:Why should redirecting the stderr away from the window where
:the stdout goes affect vi so seriously, or for that matter,
:at all? At first I thought that the stdout & stderr somehow
:might combine to make the vi screen image, but that can't be
:right because of the first example (plus it's a lousy idea)
:That's what I _really_ find strange. If redirecting the
:stderr to another window messes up vi, then why doesn't
:redirecting the stdout? Either way, you wind up with
:the I/O streams directed to different places. What's the
:difference?
:
:I then tried another variation. I ran the second command
:again, only replacing the 'vi' with 'ksh'. This ran much
:as I'd expected (I never knew prompts were diagnostic) so
:I figured I'd try running vi in this environment. Guess
:what? It failed, same way as in example 2.
:
:Somehow, I feel the answer to this must be linked to one
:of the great truths of the universe which I have somehow
:failed to grasp. Anybody care to enlighten me?
:
:Awaiting your replies,
:
:Michael C. De Masi - AT&T Communications (For whom I work and not speak)
:2340 Dulles Corner Blvd. Herndon, Virginia 22071 Phone: 703-834-8123
:UUCP: decuac!grebyn!paisano!demasi
: "All things considered, I'd rather be in Philadelphia" - W C Fields
I tried redirecting i/o with vi some time back - i wanted to
redirect the output of :se all and :map[!] into a member
so I could print it for a presentation. I eventually
succeeded in redirecting ex (you might try that).
Apparently, when entering visual mode, ex (vi) does
an ioctl (2,.. call to set up termio values. If
stderr is not a terminal, everything gets hosed up.
I've also seen odd things happen with shell layers if
everything is not set up perfectly kosher. ( for instance,
layers hanging around after the shell's been killed, with
the output showing up on the system console).
BTW, does delete work on your system from within a layer.
On ours, its just ignored.
Dan Mercer
NCR Comten