Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ write(1) — Motorola System V 88k Release 4 Version 4.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

mail(1)

mesg(1)

pr(1)

sh(1)

who(1)

setuid(2)

write(1)  —  USER COMMANDS

NAME

write − write to another user

SYNOPSIS

write user [line]

DESCRIPTION

write copies lines from your terminal to that of another user.  When first called, it sends the message:

Message from yourname (tty??) [ date ]...

to the person you want to talk to.  When it has successfully completed the connection, it also sends two bells to your own terminal to indicate that what you are typing is being sent. 

The recipient of the message should write back at this point.  Communication continues until an end of file is read from the terminal, an interrupt is sent, or the recipient has executed “mesg n”.  At that point write writes EOT on the other terminal and exits. 

If you want to write to a user who is logged in more than once, the line argument may be used to indicate which line or terminal to send to (for example, term/12); otherwise, the first writable instance of the user found in /var/adm/utmp is assumed and the following message posted:

user is logged on more than one place.
You are connected to “terminal”.
Other locations are:
terminal

Permission to write may be denied or granted by use of the mesg command.  Writing to others is normally allowed by default.  Certain commands, such as the pr command, disallow messages in order to prevent interference with their output.  However, if the user has super-user permissions, messages can be forced onto a write-inhibited terminal. 

If the character ! is found at the beginning of a line, write calls the shell to execute the rest of the line as a command. 

write runs setgid() [see setuid(2)] to the group ID tty, in order to have write permissions on other user’s terminals. 

write will detect non-printable characters before sending them to the user’s terminal.  Control characters will appear as a ‘^’ followed by the appropriate ASCII character; characters with the high-order bit set will appear in “meta” notation.  For example, ‘\003’ is displayed as ‘^C’ and ‘\372’ as ‘M−z’. 

The following protocol is suggested for using write: when you first write to another user, wait for them to write back before starting to send.  Each person should end a message with a distinctive signal (that is, (o) for “over”) so that the other person knows when to reply.  The signal (oo) (for “over and out”) is suggested when conversation is to be terminated. 

FILES

/var/adm/utmp
to find user

/usr/bin/sh
to execute !

INTERNATIONAL FUNCTIONS

write can send characters from supplementary code sets. 

write uses the locale of the sender to determine printability. 

SEE ALSO

mail(1), mesg(1), pr(1), sh(1), who(1), setuid(2)

DIAGNOSTICS

user is not logged on
If the person you are trying to write to is not logged on. 

Permission denied
If the person you are trying to write to denies permission (with mesg). 

You have your terminal set to "mesg -n"

No reply possible.
If your terminal is set to mesg n and the recipient cannot respond to you. 

Can no longer write to user
If the recipient has denied permission (mesg n) after you had started writing. 

Write failed (user logged out): error
If the user is no longer logged in.

fork failed: error

Try again later.
If your attempt to issue a shell command via ! failed. 

Timeout trying to open user’s line terminal
If the connection times out.

I cannot determine your terminal name.  No reply possible. 
If your standard file descriptors (stdin, stdout, stderr) are not attached to a terminal in /dev. 

user is not at line
If the user is not at the line specified. 

Cannot determine who you are
If you are not found in the utmp or passwd files. 

Write failed (user logged out?): error
If you can no longer write to the recipient.

  —  Essential Utilities

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026