下面这个算法说明了从 cmd line 到 argc argv的方法,在获取进程信息时会被用到
void RunnerFinder::toArgument(const QString& cmd, int & argc, char ** &argv)
{
QStringList params = cmd.split(' ' , QString::SkipEmptyParts);
argc = params.size();
argv = new char *[sizeof (char *)*argc];
for (int i=0; i<argc; ++i) {
int size = params.at(i).size();
char * q = new char [size+1];
memset(q, 0, size+1);
argv[i] = q;
std::string pstr = params.at(i).toStdString();
const char * scmd = pstr.c_str();
memcpy(q, scmd, size);
}
}
QT是这样解析参数的
QCoreApplication app(argc, argv);
QStringList arglst = app.arguments();