我有这段代码使用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并不会让任何对我有用的东西。而且我不想忽视这个信号。
赞赏任何想法:)