2009/07/27

C/C++ Predefined Macros

寫程式經常會用到編譯器預先定義的巨集 (Predefined Macros),例如:__FILE__、__LINE__、__DATE__、__TIME__、__func__ 等。這些巨集有些是標準 C/C++ 語言所定義的,有些則是編譯器自行定義的。使用 GNU C/C++ 的人,可參考以下資料:
Predefined Macros (GNU C/C++)
這份資料所提到的 System-specific Predefined Macros 是指針對不同的系統平台 (arm、mips 等),編譯器所預先定義的特殊巨集。若想直接看看這些預先定義的巨集,可執行以下指令:
echo | gcc -dM -E - | sort
使用 Microsoft 系列編譯器的人,可參考以下資料:
Predefined Macros (MSDN)

2009/07/22

兩個管理 init script 的指令: service、rcconf

在 Ubuntu 上安裝一些 daemon (如 apache、ushare 等) 後,都要靠 init script 來控制。有兩個管理 init script 的指令一定要會用:service 和 rcconf。

service

用來啟動、停止和檢查這些 daemon 的狀態。例如:
  • service --status-all => 列出目前所有 daemon 的狀態
  • sudo service XXX start => 馬上啟動 XXX daemon
  • sudo service XXX stop => 馬上關閉 XXX daemon
  • service XXX status => 檢查 XXX 的狀態
rcconf

用來控制系統開機時是否要執行這些 daemon。例如:
  • sudo rcconf --list => 列出目前所有 daemon 的啟動設定
  • sudo rcconf --on XXX => 設定 XXX daemon 開機時自動啟動
  • sudo rcconf --off XXX => 設定 XXX daemon 開機時自動啟動
若你的系統沒有 rcconf 指令,請按以下方式安裝:
sudo apt-get install rcconf