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();
}
近期评论