【发布时间】:2015-08-18 18:32:43
【问题描述】:
C 中是否有任何函数可以检查计算机是否将进入sleep、hibernate 或locked 并从这些状态中唤醒?
在msdn 中,他们提供了C#、C++,但没有提供C。
我的操作系统是windows7
下面是我用来检查程序启动和终止之间持续时间的代码(关闭系统将终止程序,因此可以测量持续时间)。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include<time.h>
clock_t start_time=0;
void bye (void)
{
FILE *read,*write;
write=fopen("F:\\count.txt","w");
clock_t end_time=clock();
fprintf(write,"Time: %d",(end_time-start_time)/CLOCKS_PER_SEC);
fclose(write);
}
int main (void)
{
start_time=clock();
atexit (bye);
//exit (EXIT_SUCCESS);
getch();
}
以同样的方式我想检查锁定/睡眠/休眠。
@ddriver 提到的将 c++ 代码(在链接中提供)包装在 c 中的一种可能方法
但在 C 中根本不可能吗?
【问题讨论】:
-
棘手的问题,这取决于 C 代码运行的模式、使用的操作系统等。例如在睡眠模式下,某些进程(包括 c 代码)也会睡眠,因此无法运行并检查睡眠模式,此外,睡眠模式有多种实现方式需要根据平台和操作系统进行检查
-
当处理器处于休眠状态时,您希望函数如何/在哪里运行?
-
这就像如何检查你是否已经死了。如果你死了,你能做到吗?
-
您链接到的示例代码,使用来自操作系统的事件(或信号)来处理电源模式发生变化,这同样取决于平台和操作系统
-
对不起,我忘了添加操作系统。更新了问题。无论如何它是 msdn 所以操作系统是 windows。