差分表示
- 最後の更新で追加された行はこのように表示します。
- 最後の更新で削除された行はこのように表示します。
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);
+
+ }