QProcess收到了sigpipe信号

时间:2015-01-12 14:43:45

标签: c++ qt qprocess

我有这段代码使用QProcess来grep某些Linux命令的输出。像这样:

QString Info::getUsedHddSize(){
  QProcess hddUsedProcess;
  hddUsedProcess.start("bash");
  hddUsedProcess.waitForStarted(1000);
  hddUsedProcess.write("df -lh --total | grep total");
  hddUsedProcess.closeWriteChannel();
  hddUsedProcess.waitForFinished(1000);

  QString out =QString(hddUsedProcess.readAllStandardOutput()) ;
  return out;
}

如果创建对象,在函数内调用方法,这可以正常工作。像这样:

Info a;
QString result = a.getUsedHddSize();

但是如果我将Info作为变量存储在一个类中并使用该方法,它最终会崩溃,因为它接收信号" SIGPIPE"。我觉得这很奇怪。像这样: test.h

class Test{
...
private:
 Info info;
}

TEST.CPP

void Test::foo(){

 QString a = info.getUsedHddSize();// the program crash here with signal SIGPIPE.
}

quick search并不会让任何对我有用的东西。而且我不想忽视这个信号。

赞赏任何想法:)

0 个答案:

没有答案