[mod.computers.vax] VMS equiv of UNIX 'cat foo > /dev/ttyX'

ANK@CUNYVMS1.BITNET.UUCP (02/25/87)

HI
 
        I was wondering if there is an equivalent of unix command
that pipes the output to another terminal ?
 
$ cat foo.mss > /dev/tty3 ?
 
under VMS ?
 
If there is no existing utility then, I'll have to write a procedure for that.
 
Users in VMS login to two terminals, but want to send the output
of a program in one to another terminal .
 
 
                                                Anil Khullar
                                        {Ph.D. Program in Psychology
                                         City Univ. Graduate Center.
                                            New York NY 10036}
                                        ank%cunyvms1.BITNET@wiscvm.edu
 
 

yerazuws@CSV.RPI.EDU.UUCP (02/25/87)

In article <8702250122.AA18316@ucbvax.Berkeley.EDU>, ANK@CUNYVMS1.BITNET writes:
>         I was wondering if there is an equivalent of unix command
> that pipes the output to another terminal ?
>  
> $ cat foo.mss > /dev/tty3 ?
>  
> under VMS ?
>  

Sure.  COPY can write to a terminal just like a file.  Or a magtape.
Or whatever else might be on line.
	
For example, to write to the equivalent of /dev/tty3 (txa3:) on a MicroVAX:
	
$ copy foo.tex txa3:

You DO need physio priviledge to do this, if the terminal line isn't set
up as an assignable device.  If it is set up as assignable, you just
ALLOCate txa3: and then COPY your file to it.
	
You probably want to set the TX line to HOSTSYNC and READSYNC so that
when whatever-it-is on the other end is in danger of overrunning, it will
send ^S-^Q signals.  If the other end is a Unix machine, 'stty tandem' 
will do the trick.
 
You can even do this COPYing trick to a line that is ALLOCated to 
another user, or to a line that is being used for SET HOST/DTE, if
you have enough privs.  I know that works too; I move my resume around
that way.
	
	Enjoy
	-Bill Yerazunis
	
	"Daniel, people at the door.  Police, Daniel"

LEICHTER-JERRY@YALE.ARPA.UUCP (02/26/87)

    I was wondering if there is an equivalent of unix command that pipes the
    output to another terminal ?

    $ cat foo.mss > /dev/tty3 ?

    under VMS ?

    If there is no existing utility then, I'll have to write a procedure for
    that.

    Users in VMS login to two terminals, but want to send the output
    of a program in one to another terminal .

The literal equivalent of the command you gave above is:

	$ COPY FOO.MMS TTY3:

In general, it will not work, however:  You will be told that TTY3: is
"unavailable", because someone else is already using it.  Unlike Unix, VMS
is rather protective about device access, and will not allow you to dump
stuff to devices in use by other jobs, even if those jobs are yours.  The
SHARE privilege would allow you to write to other terminals - ALL other
terminals.

There is a system call, $BRKTHRU, which is used to do broadcasting to other
terminals.  It also requires privileges to write to terminals other than
those actually in use by your job - OPER, in this case.

It's possible to have multiple terminals owned by one job.  For example, you
could log in on TTA1:, then allocate TTA3: and do a:

	$ SPAWN/NOWAIT/INPUT=TTA3:/OUTPUT=TTA3:

and have a new subprocess running on TTA3:.  Since TTA3: would be owned by
the same job as TTA1:, either process could write to either terminal.

This last approach, however, also won't work on most systems, since terminals
are normally set to forbid any access by non-privileged users when no one is
logged in on them.  (This is to prevent people from writing password grabbers
that fake a login sequence.)  You could have your system manager set an ACL
on a particular terminal port to allow you to allocate it.

							-- Jerry
-------