我有一个 C 程序来处理一些 shell 命令的输出。对于“ps”,我对以下五个字段感兴趣。我通过名称指定我想要的字段,为 glib 正则表达式引擎构建模式,然后解析和处理结果。
有没有一种好方法来组织产生可读和可维护代码的字段、模式和格式/类型?我到目前为止的作品,但看起来不太好。我正在 OS X 上开发,但以后想移植到其他平台。
还有一种方法可以让 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.
...