write(1)


write -- 他のユーザへのメッセージの書き込み

形式

write user [terminal]

機能説明

write コマンドは、使用中の端末から他のユーザの端末に入力行を複写します。最初に呼び出すと、write は次のメッセージを宛先に送ります。
 
   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''の意味)は、対話終了時に使うとよいでしょう。

ファイル

/var/adm/utmp ユーザの検索

/usr/bin/sh ! の実行

/usr/lib/locale/locale/LC_MESSAGES/uxcore
言語特有のメッセージファイル(environ(5)LANG を参照)

エラー

UX:write:ERROR:User is not logged on.
write の対象にしようとしているユーザがログインしていないことを意味します。

UX:write:ERROR:Permission denied.
write の対象にしようとしているユーザが(mesg によって)拒否していることを意味します。

UX:write:Warning: cannot respond, set mesg -y.
ユーザの端末が mesg n に設定されていて、メッセージの受け手が応答できないことを意味します。

UX:write:ERROR:Can no longer write to user.
ユーザが write を始めた後で、受け手がそれを(mesg n で)拒否したことを意味します。

関連項目

mail(1), mesg(1), pr(1), setuid(2), sh(1), who(1)
SCO UnixWare Forum Beta Release (BL12) -- September 1997
© 1997 The Santa Cruz Operation, Inc. All rights reserved.