HP-UX / wall
シャットダウンのとき皆にメッセージ出る奴 、あれやってるのが 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); }