sysctl编程读电池状态
2009-05-13 15:40:58来源:未知 阅读 ()
一直都是用FVWM,而且是最简单的那种配置。各方面都很满意,就是在笔记本上不能知道电池状态是个遗憾,今天总算彻底解决了这个问题,解决问题的思路是调用sysctl读取电池装态。
$man 3 sysctl
还是看man就可以了:) 主要关注 sysctlbyname方法,对于电池状态,我只读取以下两项,
hw.acpi.battery.life
hw.acpi.battery.state
顺便把系统时钟也显示出来,以替换原来使用的xclock。
#include stdio.h>
#include signal.h>
#include unistd.h>
#include sys/time.h>
#include sys/types.h>
#include sys/sysctl.h>
void updateClock(int sig){
int life, state;
size_t len = sizeof(int);
sysctlbyname("hw.acpi.battery.life",&life,&len,NULL,0);
sysctlbyname("hw.acpi.battery.state",&state,&len,NULL,0);
char* color;
if(state != 1){
// AC online
color = "0;32m"; //
}else{
// Battery
color = (life 30) ? "0;41m" : "0;42m";
}
time_t now = time(NULL);
printf("\x1b[0;0H\x1b[0;%s%3d\x1b[0m %s", color,life, ctime(&now));
}
int main(int argc, char** args){
printf("\x1b[2J\x1b[0;0H"); // clear screen
struct itimerval timer = {{1,0}, {1,0}};
int err = setitimer(ITIMER_REAL, &timer, NULL);
if(err 0){
printf("%d: %s\n",err,"Can not set itimer");
return err;
}
signal(SIGALRM, updateClock);
for(;;)pause();
}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 嵌入式开发专题:C语言嵌入式系统编程修炼(转) 2009-05-13
- mrtg监控squid状态 2009-05-13
- mrtg监控apache状态 2009-05-13
- csh(tcsh)编程 2009-05-13
- Kommander编程概述 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash