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重新指定指定的标准输出文件中。

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

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("\r\n");
	process.start(program);
	process.waitForStarted();
	process.waitForFinished();
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM