这段C代码实在看不懂,意义何在?

这是一段检查进程名的代码。但是有什么意义捏。是为了检测大小写匹配吗

bool checkProcessName(DWORD processId)
{
    std::string processName = getProcessName(processId);

    size_t processNameLen = processName.length();

    for (size_t i=0; i<g_processNames.size(); i++)
    {
        if (g_processNames[i].length() > processNameLen)
            continue;

        if (stricmp(g_processNames[i].c_str(), processName.c_str() + processNameLen - g_processNames[i].length()) == 0)
            return true;
    }

    return false;
}
阅读 1.6k
2 个回答

瞎猜(你这上下文太少了,只能猜了 ...):可能 processName 里有路径,但是 g_processNames[i] 里没有。

@fefe 说的应该是对的,processName 有路径,所以让 processName.c_str() 前进到路径后面的进程名位置。之所以不直接用字符串的 find,原因可能是,一,加快查找,二,路径也可能包含与进程同名的字符串。

但这个函数依然有瑕疵,如果是下面这个 case 的话,

processName = "C:\Users\Default\Desktop\dummy_scree.exe"
g_peocessNames[] = {"scree.exe"}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题