C 語言本身無內建關機 API,但可透過 system() 呼叫作業系統原生命令。Windows 下最簡單的方式:
#include <stdlib.h>
int main(void) {
int seconds = 60; // 60 秒後關機
char cmd[64];
snprintf(cmd, sizeof(cmd), "shutdown -s -t %d", seconds);
system(cmd); // 執行關機命令
return 0;
}
shutdown -s 表示關機,-t 指定倒計時秒數。若需取消,可執行 shutdown -a。
system() 會啟動命令解譯器,有安全風險且不可攜。Windows 正式開發建議用 InitiateSystemShutdownEx:
#include <windows.h>
void shutdown_after(DWORD seconds) {
BOOL ok = InitiateSystemShutdownEx(
NULL, // 本機
L"定時關機", // 提示訊息
seconds, // 倒計時
TRUE, // 強制關閉應用
TRUE, // 重啟而非關機?FALSE=關機
SHTDN_REASON_MAJOR_OTHER | SHTDN_REASON_MINOR_OTHER
);
if (!ok) { /* 錯誤處理 */ }
}
需連結 Advapi32.lib,並以管理員權限執行。
#ifdef _WIN32
system("shutdown -s -t 60");
#else
system("shutdown -h +1"); // 1 分鐘後關機(需 root)
#endif
Linux 下 shutdown -h now 立即關機,-r 重啟,-c 取消。
若需視窗顯示倒計時、允許使用者取消,可結合 GUI 框架(Qt、Win32 API、GTK)建立計時器,定期更新標籤,並在使用者點擊「取消」時呼叫取消關機 API。
system("shutdown ...") 最省事。InitiateSystemShutdownEx,Linux 用 systemd D-Bus 或 shutdown 指令(需權限)。