下面這個算法說明了從 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();