Qt。在 QProcess 中复制资源文件
Posted
技术标签:
【中文标题】Qt。在 QProcess 中复制资源文件【英文标题】:Qt. Copy resource file in QProcess 【发布时间】:2020-06-06 08:45:22 【问题描述】:我正在尝试复制已附加到程序中的文件,例如 /usr/share/postgresql/10/extension/
中的资源(需要 sudo
权限)
如果目标路径在 /home
中,我可以这样做:
QFile file(QStringLiteral(":/resourcefile"));
if(file.open(QIODevice::ReadOnly))
file.copy("/home/user/......./resourcefile");
但这不是我的情况。因此我必须在this way 中使用QProcess(我认为):
QProcess process1, process2;
process1.setStandardOutputProcess(&process2);
process1.start("echo mypass");
process2.start("sudo -S cp <resourcefile> /usr/share/postgresql/10/extension/file.sql");
process2.setProcessChannelMode(QProcess::ForwardedChannels);
bool retval = false;
QByteArray buffer;
while ((retval = process2.waitForFinished()));
buffer.append(process2.readAll());
.....
问题是....我怎样才能将<resourcefile>
传递给 process2?
【问题讨论】:
【参考方案1】:使用这个方法:
QProcess::setArguments(const QStringList &arguments)
QProcess::setNativeArguments(const QString &arguments)
QProcess::setStandardInputFile(const QString &fileName)
QProcess::setStandardOutputFile(const QString &fileName, QIODevice::OpenMode mode = Truncate)
看看这个:https://doc.qt.io/qt-5/qprocess.html
【讨论】:
谢谢,但我无能为力。我真正的问题是“资源文件”不是 bash 可以使用的物理文件。我去编辑问题以澄清以上是关于Qt。在 QProcess 中复制资源文件的主要内容,如果未能解决你的问题,请参考以下文章