いくつかのシェルコマンドからの出力を処理するCプログラムがあります。'ps'については、次の5つのフィールドに関心があります。必要なフィールドを名前で指定し、glib正規表現エンジンのパターンを作成してから、結果を解析して処理します。
読み取り可能で保守可能なコードを生成するフィールド、パターン、およびフォーマット/タイプを整理するための良い方法はありますか?私がこれまでに持っているものは機能しますが、あまりよく見えません。私はOSXで開発していますが、後で他のプラットフォームに移植したいと思います。
また、C#の@文字列演算子のような動作を取得して、パターンのバックスラッシュの半分を削除する方法はありますか?
ありがとう。
const char field_pid[] = "pid";
const char field_lstart[] = "lstart";
const char field_ruser[] = "ruser";
const char field_cputime[] = "cputime";
const char field_command[] = "command";
char pattern[] = "\\s*(?<pid>\\d+)\\s+(?<lstart>\\w+\\s+\\w+\\s+\\d+\\s+[\\d:]+\\s+\\d+)\\s+(?<ruser>\\w+)\\s+(?<cputime>[\\d:\\.]+)\\s+(?<command>.+)";
// Do the regex match.
...
// Extract the matching strings.
gchar *pid = g_match_info_fetch_named(match_info, field_pid);
gchar *lstart = g_match_info_fetch_named(match_info, field_lstart);
gchar *ruser = g_match_info_fetch_named(match_info, field_ruser);
gchar *cputime = g_match_info_fetch_named(match_info, field_cputime);
gchar *command = g_match_info_fetch_named(match_info, field_command);
// Parse and process the strings.
...