QProcess调用外部程序并带参执行

想借助git-bash在windows上使用Linux下的find,grep等命令查找文件中的宏定义。
但在实际操作过程中发现通过QProcess调用git-bash启动git-bash时默认带了参数--login -i,导致执行命令时grep好像将grep命令附加到了--login -i后面报了grep无权限的问题。

后续直接找到了grep for windows,GNU下的grep命令的windows版本执行文件,并找到其执行依赖的dll库,放在执行文件目录下,实现了QProcess通过grep.exe进行字符串匹配后输出匹配内容到 预先通过setStandardOutputFile重新指定指定的标准输出文件中。

需要额外注意的是相关路径中的和//表示,以及命令结尾的" "

QProcess process(0);
process.setStandardOutputFile(QString("E:\x.txt"), QIODevice::Append);
QStringList result;
for (int k = 0; k < files.size(); k++)
{
	QString program = "grep.exe -E ";
	program.append(""^\s*#if|^\s*#ifdef|^\s*#ifndef|^\s*#elif"");
	program.append(" ");
	QString str = files.at(k);
	str.replace(QString("/"), QString("//"));
	program.append(str);
	program.append("
");
	process.start(program);
	process.waitForStarted();
	process.waitForFinished();
}
原文地址:https://www.cnblogs.com/kuikuitage/p/12854124.html