首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QProcess()并不总是起作用

QProcess()并不总是起作用
EN

Stack Overflow用户
提问于 2015-05-30 11:19:02
回答 1查看 570关注 0票数 1

我试图通过使用mkfs.fat和QProcess()来格式化Qt中的USB驱动器。问题是调用了QProcess(),但有时它会在没有完成格式化的情况下退出。如果我读exitCode(),它是1。

这是一项功能:

代码语言:javascript
复制
bool UsbDevice::formatFat(QByteArray name)
{
    QProcess * formatter = new QProcess(this);

    QString partition = baDevice + "1"; // baDevice is "/dev/sdb"
    QString mkfs = "mkfs.fat";

    QStringList args;
    args << "-F32" << "-v" << "-I" << "-n " + name << partition;

    formatter->start(mkfs, args);

    formatter->waitForStarted();

    formatter->waitForFinished(-1);

    emit logLine(formatter->readAll());

    if (formatter->exitCode() == 0)
        {
            emit logLine("mkfs.fat executed correctly.");
        }
    else
        {
            emit logLine(QString("Possible fail to format device (Error: %1).").arg(formatter->errorString()));
        }

    delete formatter;

    return true;
}

如果函数被调用3-5次,则该函数可以工作。我理解比这更多的问题(例如,这个函数由于waitFor*函数而阻塞用户界面,其中一个函数可以永远阻塞而不需要超时),但我不明白为什么进程有时没有完成Ok。

logLine调用qDebug,当输出不能工作时,如下所示:

代码语言:javascript
复制
mkfs.fat 3.0.27 (2014-11-12)

Possible fail to format device (Error: Unknown error).

当它工作时,它输出:

代码语言:javascript
复制
mkfs.fat 3.0.27 (2014-11-12)
/dev/sdb1 has 64 heads and 32 sectors per track,
hidden sectors 0x0800;
logical sector size is 512,
using 0xf8 media descriptor, with 30279937 sectors;
drive number 0x80;
filesystem has 2 32-bit FATs and 16 sectors per cluster.
FAT size is 14771 sectors, and provides 1890647 clusters.
There are 32 reserved sectors.
Volume ID is c35005fb, volume label  USB   .

mkfs.fat executed correctly.

这使我认为这些论点是正确的。

我也尝试过将finished()信号连接到一个插槽和阻塞,直到信号发出,但仍然没有运气。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-30 11:41:28

文档对此并不十分清楚,但看起来readAll的输出与readAllStandardOutput的输出相同。软件通常会在stderr (StandardError)上输出错误,因此您必须调用readAllStandardError来查看错误消息。所以QProcess()没有什么问题,只有mkfs.fat失败了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30545498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档