首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

用 C 語言實現倒計時關機:系統呼叫與跨平台方案

     編輯:C 語言問答

直接調用系統關機命令

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。

更穩健的 Windows API 方案

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,並以管理員權限執行。

Linux/macOS 跨平台寫法

#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 ...") 最省事。
  • 正式產品:Windows 用 InitiateSystemShutdownEx,Linux 用 systemd D-Bus 或 shutdown 指令(需權限)。
  • 注意權限:關機屬特權操作,程式需以管理員/root 身分執行。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved