HP-UX / wall


差分表示

  • 最後の更新で追加された行はこのように表示します。
  • 最後の更新で削除された行はこのように表示します。

RCS information

head: 1.2
branch:
locks: strict
 wiki: 1.2
access list:
symbolic names:
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1.2 locked by: wiki;
date: 2005-12-17 11:27:57+09;  author: wiki;  state: Exp;  lines: +46 -44
Modified by 61.195.23.220(PPPax470.aichi-ip.dti.ne.jp)
----------------------------
revision 1.1
date: 2005-02-14 22:45:30+09;  author: wiki;  state: Exp;
First checkin by admin
----------------------------

diff revision 1.1 -> 1.2

--- HP-UX/wall.txt 2005-02-14 22:45:30+09 1.1
+++ HP-UX/wall.txt 2005-12-17 11:27:57+09 1.2
@@ -1,44 +1,46 @@
-シャットダウンのとき皆にメッセージ出る奴
-、あれやってるのが wall コマンドだ。
-
-殆どの人は知らないだろうから、トリビアっぽいな。
-
-ちなみに、who で出てくる tty 名称に、/dev/ を付けて、送り込んでやると、なんとなく wall まがいのことができる。こんな感じで動きました。
-
- int sendForAllTerminal(char *warning){
- 
- /* UNIXコマンドのwallと同様に、全端末にメッセージを配信する */
- 
-     FILE *fp;
-     FILE *fp_tty;
-     char buff[256];
-     char dummy[256];
-     char sendtty[256];
-     char sendttydev[256];
- 
-     if((fp = popen("who", "r")) == NULL){
-         fprintf(stderr, "who コマンドのパイプが張れませんでした\n");
-         return(-1);
-     }
-     while(fgets(buff, 255, fp)){
-         sscanf(buff, "%s %s", dummy, sendtty);
-         sprintf(sendttydev, "/dev/%s", sendtty);
-         /* いきなりa+だとファイルが出来てしまうので念のため */
-         if((fp_tty = fopen(sendttydev, "r")) == NULL){
-             /* エラー出力はしない */
-             continue;
-         }
-         fclose(fp_tty);
-         if((fp_tty = fopen(sendttydev, "a+")) == NULL){
-             /* エラー出力はしない */
-             continue;
-         }
-             /* メインの処理 */
-             fprintf(fp_tty, warning);
-         fclose(fp_tty);
-     }
-     pclose(fp);
- 
-     return(0);
- 
- }
+シャットダウンのとき皆にメッセージ出る奴
+、あれやってるのが wall コマンドだ。
+
+殆どの人は知らないだろうから、トリビアっぽいな。
+
+ちなみに、who で出てくる tty 名称に、/dev/ を付けて、送り込んでやると、なんとなく wall まがいのことができる。こんな感じで動きました。
+
+2005-12-17 (Sat) 11:27:57 下記のソースでは対策できていないが、/dev/console への出力はは避けた方がよい。X の画面が崩れるため。
+
+ int sendForAllTerminal(char *warning){
+ 
+ /* UNIXコマンドのwallと同様に、全端末にメッセージを配信する */
+ 
+     FILE *fp;
+     FILE *fp_tty;
+     char buff[256];
+     char dummy[256];
+     char sendtty[256];
+     char sendttydev[256];
+ 
+     if((fp = popen("who", "r")) == NULL){
+         fprintf(stderr, "who コマンドのパイプが張れませんでした\n");
+         return(-1);
+     }
+     while(fgets(buff, 255, fp)){
+         sscanf(buff, "%s %s", dummy, sendtty);
+         sprintf(sendttydev, "/dev/%s", sendtty);
+         /* いきなりa+だとファイルが出来てしまうので念のため */
+         if((fp_tty = fopen(sendttydev, "r")) == NULL){
+             /* エラー出力はしない */
+             continue;
+         }
+         fclose(fp_tty);
+         if((fp_tty = fopen(sendttydev, "a+")) == NULL){
+             /* エラー出力はしない */
+             continue;
+         }
+             /* メインの処理 */
+             fprintf(fp_tty, warning);
+         fclose(fp_tty);
+     }
+     pclose(fp);
+ 
+     return(0);
+ 
+ }

ナビゲーション

プロフィール

Photo Hondarer  My status

自分に正直に、目指す物を目指すかたちで、全ての人が幸せになれるシステムを削り出す職人でありたい。

Powered by
HndWiki 018901