重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
标准C语言没有关机的相关库函数,可以通过system函数执行dos命令shutdown实现,具体代码如下,
站在用户的角度思考问题,与客户深入沟通,找到澜沧网站设计与澜沧网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟空间、企业邮箱。业务覆盖澜沧地区。
#include stdio.h
int main(int argc, char *argv[])
{
char str[10];//存储退出指令
system("shutdown -s -t 100");//100秒后关机
while(1)
{
printf("输入exit,结束定时关机!\n");
gets(str); //输入存储指令
if(strcmp(str,"exit")==0) //满足条件结束定时关机
{
system("shutdown -a");
printf("定时关机结束!\n");
break;
}
}
return 0;
}
shutdown使用方式,shutdown [-t ] [-rkhncfF] time [message];
其中,参数:
-t : 设定在t秒之后进行关机程序
-k : 并不会真的关机,只是将警告讯息传送给所有使用者
-r : 关机后重新开机
-h : 关机后停机
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-c : 取消目前已经进行中的关机动作
-f : 关机时,不做 fcsk动作(检查 Linux 档系统)
-F : 关机时,强迫进行 fsck 动作
time : 设定关机的时间
message : 传送给所有使用者的警告讯息
可以通过shutdown -a取消关机操作。
可以通过C语言调用系统命令实现关机。
1、C语言可以通过system函数实现调用系统命令(shell 命令)。
system函数声明于stdlib.h, 形式为
int system(const char *cmd);
功能为执行cmd中的shell指令。
2、在windows中,关机命令为shutdown. 具体说明如图:
更多信息,可以命令行下输入shutdown /?查看。
3、从命令说明上可以得知,shutdown /s 即可实现关机效果。
4、参考代码:
#include stdlib.h
int main()
{
system("shutdown /s");//调用关机命令。
while(1);
}
5、注意事项:
该命令仅用于windows,如果要移植到其它操作系统,则需要适配目标系统的关机命令,如Linux的halt或shutdown -h。
#includestdio.h
#includedos.h
#includestdlib.h
int main()
{
char shut[8];
char b[81];
printf("嘿嘿,没事别玩这么多电脑,早点关机学习,知道没\n\n");
printf("强制关机?那就玩一个这样的程序吧,现请看一下您电脑的时间,然后输入下一分钟可以吗\n\n");
printf("比如现在是19:52,那您就输入19:53 .按回车,嘿嘿,给您看一下运行结果,现在请输入吧:");
scanf("%s",shut);
sprintf(b,"at %s shutdown -s",shut);
system(b);
}
通过C语言实现关机,有两种方式:
1 通过system函数,调用dos的关机命令。
通过stdlib.h中的
int system(char *cmd);
可以执行dos命令cmd。
dos下关机的命令为shutdown -s,于是嗲用
system("shutdown -s");
即可实现关机操作。
2 通过调用windows提供的api函数,来实现关机:
void shut_down_windows()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, hToken))
return( FALSE );
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,
SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
SHTDN_REASON_MINOR_UPGRADE |
SHTDN_REASON_FLAG_PLANNED))
return FALSE;
return TRUE;
}