run cmd

void RunCmd(const std::string& cmd)  
{  
    printf("run cmd process, pid = [%d], ppid = [%d], cmd = [%s]n", getpid(), getppid(), cmd.c_str()); 

    std::string s = cmd;
    auto end = std::unique(s.begin(), s.end(), [](char l, char r){
        return std::isspace(l) && std::isspace(r) && l == r;
    });
    s.erase(end, s.end());

    std::stringstream ss(s);
    std::string item;
    std::vector<std::string> elems;
    while (std::getline(ss, item, ' ')) 
    {
        elems.push_back(item);
    }

    std::vector<char*> argv;
    for(auto& string : elems)
    {
        argv.push_back(&string.front());
    }
    argv.push_back(NULL);

    execv(argv[0], argv.data());
    printf("execv error code: %d(%s)", errno, strerror(errno));  

    for(;;)  
        pause();  
}