Message from login (terminal/??) [date] . . .接続が成功すると、使用中端末にベルを 2 つ送ってユーザの入力した内容が送信されていることを知らせます。
メッセージの受け手は、この時点で書き込みを返します。通信は、エンドオブファイルが端末から読み取られるか、割込みが送られるか、受け手が``mesg n''を実行するまで続きます。その時点で、write は送付先の端末に EOT
を書き込んで終了します。
複数の装置にログインしているユーザに書き込もうとする場合には、引き数 terminal を使用して、接続する回線や端末を指定します(たとえば、term/12)。line を指定しない場合は、/var/adm/utmp の最初にあった書き込み可能な回線または端末が採用され、次のメッセージが送られます。
user is logged on more than one place. You are connected to ``terminal.'' Other locations are: other_terminal
書き込み許可は、mesg コマンドを使用して拒否あるいは許可することができます。他のユーザへの書き込みは、通常、省略時解釈によって可能となっています。いくつかのコマンド、特に pr はメッセージの受信を不可として、自身の出力との干渉を防ぎます。しかし、ユーザが適切な特権を持っていれば、メッセージを書き込み禁止端末に送ることができます。
文字 ! が行の先頭にある場合には、write はシェルを呼び出して、行の残りをコマンドとして実行します。
write はその他のユーザの端末への書き込み許可を得るため、グループ ID tty に対して setgid (setuid(2) 参照) を実行します。
write は、環境変数 LC_CTYPE (environ(5) の LANG を参照) に指定されたロケールに従って補助コードセット文字を処理します。また、ユーザの端末に送信する前に非印書文字を検知します。制御文字は、対応する ASCII 文字の前に `^' を付けて表します。高位ビットが設定された文字はメタ表記で表します。たとえば、`\003' は `^C' で、`\372' は `M-z' で表します。
write の使用には、次に示す通信上の約束(プロトコル)が勧められています。最初に他のユーザに write を行う場合、送信を始める前に他のユーザから write が戻ってくるのを待機します。メッセージを、明確な信号(たとえば、``over''では(o))で終えれば、相手はいつ応答するべきか分かるようになります。信号(oo)(``over and out''の意味)は、対話終了時に使うとよいでしょう。
UX:write:ERROR:User is not logged on.
UX:write:ERROR:Permission denied.
UX:write:Warning: cannot respond, set mesg -y.
UX:write:ERROR:Can no longer write to user.