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

C語言 system() 函數返回值詳解與錯誤處理最佳實踐

     編輯:關於C

返回值規範

  • 0:命令成功執行
  • -1:system() 調用失敗 (如無法 fork、shell 不存在)
  • 正數:命令的退出碼 (需用 WEXITSTATUS 宏提取)

正確檢查範例

int ret = system("TASKKILL /F /IM text.exe");
if (ret == -1) {
    perror("system call failed");
    /* 處理系統級錯誤 */
} else if (WEXITSTATUS(ret) != 0) {
    fprintf(stderr, "Command exited with code %d\n", WEXITSTATUS(ret));
    /* 處理命令邏輯失敗 */
}

常見誤區

❌ 直接判斷 ret != 0 視為失敗 — 忽略了命令正常返回非 0 碼的情況 (如 grep 未匹配返回 1)

跨平台注意

  • Windows: system() 返回 cmd.exe 的退出碼
  • POSIX: 需配合 <sys/wait.h> 宏解析
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved