C++ QProcess()不';我不总是工作

C++ QProcess()不';我不总是工作,c++,linux,qt,qprocess,C++,Linux,Qt,Qprocess,我正试图使用QProcess()中的mkfs.fat来格式化Qt中的USB驱动器。问题是调用了QProcess(),但有时它会在未完成格式化的情况下退出。如果我读取exitCode()它是1 这就是功能: bool UsbDevice::formatFat(QByteArray name) { QProcess * formatter = new QProcess(this); QString partition = baDevice + "1"; // baDevice is

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

这就是功能:

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;
}
当它工作时,它输出:

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()
信号连接到插槽和块,直到信号发出为止,但仍然没有成功。

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

你能试试
readAllStandardError()
的输出吗?@Wimmel是的,谢谢,我想这解决了问题。输出是
/dev/sdb1:没有这样的文件或目录
。现在我必须弄清楚是什么阻止访问
/dev/sdb1
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.