bool DataLoader::createTemporaryFile() { // redirect 'git log' output to a temporary file dataFile = new UnbufferedTemporaryFile(this); #ifndef Q_OS_WIN32 /* For performance reasons we would like to use a tmpfs filesystem if available, this is normally mounted under '/tmp' in Linux. According to Qt docs, a temporary file is placed in QDir::tempPath(), that should be system's temporary directory. On Unix/Linux systems this is usually /tmp; on Windows this is usually the path in the TEMP or TMP environment variable. But due to a bug in Qt 4.2 QDir::tempPath() is instead set to $HOME/tmp under Unix/Linux, that is not a tmpfs filesystem. So try to manually set the best directory for our temporary file. */ QDir dir("/tmp"); bool foundTmpDir = (dir.exists() && dir.isReadable()); if (foundTmpDir && dir.absolutePath() != QDir::tempPath()) { dataFile->setFileTemplate(dir.absolutePath() + "/qt_temp"); if (!dataFile->open()) { // test for write access delete dataFile; dataFile = new UnbufferedTemporaryFile(this); dbs("WARNING: directory '/tmp' is not writable, " "fallback on Qt default one, there could " "be a performance penalty."); } else dataFile->close(); } #endif if (!dataFile->open()) // to read the file name return false; setStandardOutputFile(dataFile->fileName()); dataFile->close(); return true; }
MyProcess::MyProcess(QObject * parent) : QProcess(parent) { clearArguments(); setProcessChannelMode( QProcess::MergedChannels ); #if USE_TEMP_FILE temp_file.open(); // Create temporary file QString filename = temp_file.fileName(); setStandardOutputFile( filename ); temp_file.close(); connect(&timer, SIGNAL(timeout()), this, SLOT(readTmpFile()) ); #else connect(this, SIGNAL(readyReadStandardOutput()), this, SLOT(readStdOut()) ); #endif connect(this, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(procFinished()) ); }
VideoQualityJob::VideoQualityJob(const QString& name, const QString& xml, const QString& reportPath) : MeltJob(name, xml) , m_reportPath(reportPath) { QAction* action = new QAction(tr("Open"), this); action->setToolTip(tr("Open original and encoded side-by-side in the Shotcut player")); connect(action, SIGNAL(triggered()), this, SLOT(onOpenTiggered())); m_successActions << action; action = new QAction(tr("View Report"), this); connect(action, SIGNAL(triggered()), this, SLOT(onViewReportTriggered())); m_successActions << action; action = new QAction(tr("Show In Folder"), this); connect(action, SIGNAL(triggered()), this, SLOT(onShowFolderTriggered())); m_successActions << action; setLabel(tr("Measure %1").arg(objectName())); setStandardOutputFile(reportPath); }
MyProcess::MyProcess(QObject * parent) : QProcess(parent) { clearArguments(); setProcessChannelMode( QProcess::MergedChannels ); #if USE_TEMP_FILE temp_file.open(); // Create temporary file QString filename = temp_file.fileName(); setStandardOutputFile( filename ); qDebug("MyProcess::MyProcess: temporary file: %s", filename.toUtf8().data()); temp_file.close(); //connect(&temp_file, SIGNAL(readyRead()), this, SLOT(readTmpFile()) ); connect(&timer, SIGNAL(timeout()), this, SLOT(readTmpFile()) ); #else connect(this, SIGNAL(readyReadStandardOutput()), this, SLOT(readStdOut()) ); #endif connect(this, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(procFinished()) ); // Test splitArguments //QStringList l = MyProcess::splitArguments("-opt 1 hello \"56 67\" wssx -ios"); }
/** * @fn setLogOutput */ void QueuedProcess::setLogOutput(const QString &) { setStandardOutputFile(logOutput(), QIODevice::Append); }