linux进程的电源管理

linux进程的电源管理,第1张

这个问题我解决过哦。

用P/Invoke调 API:kernel32.dll中的GetSystemPowerStatus函数。函数返回系统的电源状态状态指数系统是在直流电源还是交流电源下运作,电池是否在充电,电池的剩余电量。

先定义结构体:

[StructLayout(LayoutKind.Sequential)]

public struct SYSTEM_POWER_STATUS

{

public byte ACLineStatus

public byte BatteryFlag

public byte BatteryLifePercent

public byte Reserved1

public int BatteryLifeTime

public int BatteryFullLifeTime

}

然后导入外部函数:

[DllImport("kernel32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]

public static extern bool GetSystemPowerStatus(ref SYSTEM_POWER_STATUS systemPowerStatus)

如果调用成功,返回 true,然后分析systemPowerStatus的数据就行。

ACLineStatus为1时,表示正在使用交流电源,为0使用直流电源。

希望能够帮到你。

Linux 内核具有电源管理特性。

所谓的管理软件,可能只是对内核状态的读取和设置吧。我曾经用过 CPU Frequency。

引自 IBM:

3.linux对电源管理的支持

内核模块

针对APM和ACPI两种不同的标准,linux内核提供了两个不同的模块来实现电源管理功能,这就是apm和acpi。需要注意,apm和acpi是互相冲突的两个模块,用户在同一时间内只能加载其中之一,如果当他们在加载的时候发现二者之一已经加载,就会自动退出。

用户态Daemon

为了让linux内核中的电源管理功能够更好的被利用,我们还需要用户态daemon程序的配合。针对APM和ACPI,分别有apmd和acpid两个不同软件。他们实现的功能比较类似,都是允许用户预先定义某些策略,然后跟踪电源状态,执行特定的 *** 作。在apmd软件包中还有一个工具apm,用户可以用它使机器主动进入standby和suspend状态,还可以查询bios的apm版本号。在使用acpi时直接对proc文件系统进行 *** 作即可完成同样的功能。

Linux 使用哲学(正确而优雅的使用方法) 一文中说到,正确的使用 Linux 是不安装 Xwindow,而是通过远程 ssh 它。那么当我们在一台笔记本上安装好Linux 后,要想将他合盖后还能远程访问,就需要修改一下系统的电源相关选项。这里以 CentOS为例

systemd 处理某些电源相关的 ACPI事件,可以通过从 /etc/system/logind.conf 以下选项进行配置:

触发的行为可以有

如果要合盖不休眠只需要把HandleLidSwitch选项设置为如下即可:

注意:设置完成保存后运行下列命令才生效。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7370433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存