ProcessManager — シンプルなターミナルプロセスマネージャ
概要
ProcessManagerはLinux向けに作られたシンプルなターミナルプロセスマネージャです。C言語で実装され、端末描画にはncursesを利用しています。実行中プロセスのCPUおよびメモリ使用率を一覧表示し、定期的にリアルタイム更新されます。複数のカラーテーマ切替、検索・フィルタリング、プロセスを終了する際の確認ポップアップ、KB/MB切替、組み込みヘルプ、vim風の上下移動(j/k)、マウススクロール対応など、最低限の操作性を備えた軽量ツールで、ソースはコンパクトにまとまっており自分で拡張しやすくなっています。(約300字)
リポジトリの統計情報
- スター数: 30
- フォーク数: 2
- ウォッチャー数: 30
- コミット数: 5
- ファイル数: 9
- メインの言語: C
主な特徴
- /proc を参照してプロセス一覧を表示、CPU・メモリ使用率をリアルタイム更新
- ncursesベースのテキストUIで複数カラーテーマ、vim風のキーバインド、マウス対応
- 検索/フィルタ機能・プロセス終了の確認ダイアログ・メモリ単位切替(KB/MB)
- シンプルな構成でビルド容易、ソースは単ファイル中心のため理解・拡張がしやすい
技術的なポイント
ProcessManagerはLinux固有のprocfs(/proc)から情報を読み取る設計になっており、プロセスリストや各プロセスの統計は /proc/[pid]/stat、/proc/[pid]/status、あるいは /proc/[pid]/cmdline から取得していると推察されます。CPU使用率は一般的に全CPUのjiffies(/proc/stat)と各プロセスのユーザー/カーネル時間の差分を一定間隔で取ることで算出します。本ツールも同様に更新ループで前回値との差分から割合を計算し、画面を更新している設計が読み取れます。メモリはプロセスのメモリ表記(KB)を取得し、表示フォーマットをKB/MBで切り替える機能を実装しています。
ユーザーインターフェースはncursesを用いており、画面描画、色ペアやウィンドウ管理、ポップアップ表示(確認ダイアログ)などはncurses APIで実現されます。キー入力処理はノンブロッキングやタイムアウト付きのgetchループで行い、‘t’キーでテーマ切替、‘j’/‘k’で移動、検索入力でフィルタ適用といった操作を受け付けます。マウススクロールやクリックはncursesのマウスイベント(mousemask)を用いることでスクロール対応が実装されています。
プロセス終了は確認ポップアップを出してからkillシステムコール(SIGTERM/SIGKILLなど)を送信する流れが採られているはずです。権限や競合による失敗時はエラーメッセージを表示する実装が期待されます。ビルドはMakefileで管理され、ncurses開発ライブラリが依存として必要です。コンパイルはgccでソースをコンパイルし、リンク時に-lncurses(または-lncursesw)が指定される標準的な構成です。
設計上の特徴として、単一または少数のソースファイルにまとめられているため可読性が高く、拡張や学習用途に向きます。一方で/proc依存のためLinux限定のツールであり、スケーラビリティや大規模プロセス数での最適化(例えば差分計算の効率化や並列化)は今後の改善ポイントになります。加えて、ソート条件の追加、より詳細なリソースメトリクス(スワップ使用量、IO待ち時間など)、権限昇格/ポリシーに基づく制御などの機能拡張が行いやすい作りです。(約1700字相当)
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- LICENSE: file
- Makefile: file
- README.md: file
- main.c: file
…他 4 ファイル
READMEの抜粋(主な機能):
- 実行中プロセスのCPU・メモリ表示(リアルタイム)
- カラーテーマ切替(‘t’キー)
- 検索/フィルタ機能
- プロセス終了時の確認ポップアップ
- メモリ表示のKB/MB切替
- 組み込みヘルプ、vim風のj/k移動、マウススクロール対応
ビルドに関して:
- ncurses開発パッケージが必要(ディストリによっては libncurses-dev / ncurses-devel 等)
- Makefileが提供されているため、基本的には make でビルド可能
- Linuxの/procに依存しているため、WindowsやmacOS上ではそのままでは動作しません
まとめ
シンプルで学習しやすいC+ncurses製の軽量プロセスマネージャ。拡張やカスタマイズに向く。
リポジトリ情報:
- 名前: ProcessManager
- 説明: I use arch BTW
- スター数: 30
- 言語: C
- URL: https://github.com/utsav-98/ProcessManager
- オーナー: utsav-98
- アバター: https://avatars.githubusercontent.com/u/188856958?v=4