gpt4 book ai didi

c++ - QProcess.execute() 一个 DOS 命令

转载 作者:行者123 更新时间:2023-11-30 02:58:42 27 4
gpt4 key购买 nike

我正在尝试调用 DOS 命令:substQProcess :

 QProcess process;
int returnCode=process.execute(QString("subst " + DLetter+" "+mountPath));
qDebug()<<"returnCode"<<returnCode;
if (returnCode==0){
qDebug()<<"Mount "<<QString("subst " + DLetter+" "+mountPath)
<<"error"<<process.errorString()<<"id"<<process.pid();
process.waitForFinished();
...
}else
qDebug()<<" mounting folder failed "<<process.errorString();

我的问题是:调用 execute()waitForFinished() 就足够了吗?我可以安全地调用 execute() 而不是 start 吗?因为我对 start() 有问题:它在所有情况下都不起作用(它适用于安装但不适用于卸载文件夹)。

我们将不胜感激。

最佳答案

来自 http://doc.qt.digia.com/qt/qprocess.html#execute 的 QProcess::execute() 文档

你应该这样做:

int returnCode=process::execute(QString("subst " + DLetter+"  "+mountPath));
qDebug()<<"returnCode"<<returnCode;
if (returnCode==0){
qDebug()<<"Mount "<<QString("subst " + DLetter+" "+mountPath)
<<"error"<<process.errorString()<<"id"<<process.pid();
}else
qDebug()<<" mounting folder failed ";

关键是QProcess::execute是一个启动程序的静态成员函数,等待它完成然后返回进程的退出代码。

注意:我不得不删除对 process.waitForFinished() 和 process.errorString() 的非静态调用,因为它们都不能在静态 QProcess::execute 中工作。

关于c++ - QProcess.execute() 一个 DOS 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13540338/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com