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);

}

ナビゲーション

プロフィール

Photo Hondarer  My status

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

Powered by
HndWiki 014047