2012年7月26日木曜日

[Linux] バッテリ監視プログラム(CLI)

Cとncursesで,バッテリ残量監視プログラムを作りました.

cursesは2年ぶりだったのでメチャクチャなプログラムですが使ってくれる方はどうぞ!

[Linux] CLIでバッテリ残量表示』に書いた, info と state の中身を top コマンドみたいに出力するだけです.

使い方は

端末で実行→[q]で終了

です.


コンパイルは

cc battery.c -o battery -lncurses -Wall

でできます.(-Wallはいらないです)


コンパイル時に,「ncurses.h なんてないよ」って言われたら,

sudo apt-get install libncurses5-dev

でインストールしてからコンパイルしてください.



battery.c
#include <ncurses.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

#define INFO "/proc/acpi/battery/BAT1/info"
#define STATE "/proc/acpi/battery/BAT1/state"

int main()
{
    int x=0, y=0;
    FILE *fp;
    char s[256];
    int key;

    initscr();
    noecho();
    cbreak();
    timeout(0);

    while(1)
    {
        x = 0;
        move(x, y);
       
/*     文字化けするのでコメントアウトします
        addstr("バッテリー監視ツールです.");
*/

        x++;
        move(x,y);
        addstr("http://musicadaui.blogspot.jp");
        x += 2;
        move(x,y);

        /*info の表示*/
       
        fp = fopen(INFO, "r");       
        if(fp == NULL) return(1);
       
        printw("%s :", INFO);

        while(fgets(s,256,fp) != NULL)
        {
            x++;      
            move(x,y);      
            printw("%s", s);    
        }

        fclose(fp);

        x += 2;    
        move(x,y);
   

        /* state の表示  */    
       
        fp = fopen(STATE, "r");    
        if(fp == NULL) return(1);
   
        printw("%s :", STATE);

        while(fgets(s,256,fp) != NULL)
        {      
            x++;      
            move(x,y);      
            printw("%s", s);    
        }

        refresh();
   
        key = getch();    
        if(key == 'q') break;
   
        usleep(50000);  
    }

    endwin();  
    return 0;
}



*2012.07.27 追記
インデントが崩れてしまっていたのを修正しました.
環境によって日本語が文字化けするので日本語出力部分をコメントアウトしました.

0 件のコメント:

コメントを投稿