本文整理汇总了C++中QProcess::setProcessEnvironment方法的典型用法代码示例。如果您正苦于以下问题:C++ QProcess::setProcessEnvironment方法的具体用法?C++ QProcess::setProcessEnvironment怎么用?C++ QProcess::setProcessEnvironment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QProcess
的用法示例。
在下文中一共展示了QProcess::setProcessEnvironment方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: startBuildProcess
bool PuppetCreator::startBuildProcess(const QString &buildDirectoryPath,
const QString &command,
const QStringList &processArguments,
PuppetBuildProgressDialog *progressDialog) const
{
if (command.isEmpty())
return false;
QProcess process;
process.setProcessChannelMode(QProcess::MergedChannels);
process.setProcessEnvironment(processEnvironment());
process.setWorkingDirectory(buildDirectoryPath);
process.start(command, processArguments);
process.waitForStarted();
while (true) {
if (process.waitForReadyRead(100)) {
QByteArray newOutput = process.readAllStandardOutput();
if (progressDialog) {
progressDialog->newBuildOutput(newOutput);
m_compileLog.append(newOutput);
}
}
if (process.state() == QProcess::NotRunning)
break;
}
if (process.exitStatus() == QProcess::NormalExit || process.exitCode() == 0)
return true;
else
return false;
}
示例2: ProcessRun
inline QStringList ProcessRun(QString cmd, QStringList args){
//Assemble outputs
QStringList out; out << "1" << ""; //error code, string output
QProcess proc;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("LANG", "C");
env.insert("LC_MESSAGES", "C");
proc.setProcessEnvironment(env);
proc.setProcessChannelMode(QProcess::MergedChannels);
if(args.isEmpty()){
proc.start(cmd, QIODevice::ReadOnly);
}else{
proc.start(cmd,args ,QIODevice::ReadOnly);
}
QString info;
while(!proc.waitForFinished(1000)){
if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal
QString tmp = proc.readAllStandardOutput();
if(tmp.isEmpty()){ proc.terminate(); }
else{ info.append(tmp); }
}
out[0] = QString::number(proc.exitCode());
out[1] = info+QString(proc.readAllStandardOutput());
return out;
}
示例3: CertificatesModel
// Note this functions is duplicated between AndroidDeployStep and AndroidDeployQtStep
// since it does modify the stored password in AndroidDeployQtStep it's not easily
// extractable. The situation will clean itself up once AndroidDeployStep is no longer
// necessary
QAbstractItemModel *AndroidDeployQtStep::keystoreCertificates()
{
QString rawCerts;
QProcess keytoolProc;
while (!rawCerts.length() || !m_keystorePasswd.length()) {
QStringList params;
params << QLatin1String("-list") << QLatin1String("-v") << QLatin1String("-keystore") << m_keystorePath.toUserOutput() << QLatin1String("-storepass");
if (!m_keystorePasswd.length())
keystorePassword();
if (!m_keystorePasswd.length())
return 0;
params << m_keystorePasswd;
Utils::Environment env = Utils::Environment::systemEnvironment();
env.set(QLatin1String("LANG"), QLatin1String("C"));
keytoolProc.setProcessEnvironment(env.toProcessEnvironment());
keytoolProc.start(AndroidConfigurations::instance().keytoolPath().toString(), params);
if (!keytoolProc.waitForStarted() || !keytoolProc.waitForFinished()) {
QMessageBox::critical(0, tr("Error"),
tr("Failed to run keytool"));
return 0;
}
if (keytoolProc.exitCode()) {
QMessageBox::critical(0, tr("Error"),
tr("Invalid password"));
m_keystorePasswd.clear();
}
rawCerts = QString::fromLatin1(keytoolProc.readAllStandardOutput());
}
return new CertificatesModel(rawCerts, this);
}
示例4: on_testBtn_clicked
// test connection
void SettingsDialog::on_testBtn_clicked()
{
QString command = tr("ssh %[email protected]%2 exit").arg(ui->serverUsernameLn->text(),
ui->serverIpLn->text());
QProcess *process = new QProcess(this);
process->setProcessEnvironment(MainUtils::mainEnvironment());
process->start(tr("/bin/bash -c \"%1\"").arg(command));
if(!process->waitForFinished(3000)){
ui->testLb->setText("Connection failed");
qDebug() << "Forcefully killing process";
process->kill();
return;
}
if(process->exitCode() != 0){
ui->testLb->setText("Connection failed");
qDebug() << "Exit code: " << QString::number(process->exitCode());
return;
}
ui->testLb->setText("Connection successful");
}
示例5: runShellCommand
//Run a shell command (return a list of lines)
QStringList Utils::runShellCommand( QString command )
{
//split the command string with individual commands seperated by a ";" (if any)
QStringList cmdl = command.split(";");
QString outstr;
//run each individual command
for(int i=0;i<cmdl.length();i++){
QProcess p;
//Make sure we use the system environment to properly read system variables, etc.
p.setProcessEnvironment(QProcessEnvironment::systemEnvironment());
//Merge the output channels to retrieve all output possible
p.setProcessChannelMode(QProcess::MergedChannels);
p.start(cmdl[i]);
while(p.state()==QProcess::Starting || p.state() == QProcess::Running){
p.waitForFinished(200);
QCoreApplication::processEvents();
}
QString tmp = p.readAllStandardOutput();
outstr.append(tmp);
}
if(outstr.endsWith("\n")){outstr.chop(1);} //remove the newline at the end
QStringList out = outstr.split("\n");
//qDebug() << command;
//for(int j=0; j<out.length();j++){ qDebug() << out[j];}
return out;
}
示例6: startSlaveProcess
void EngineSync::startSlaveProcess(int no)
{
QDir programDir = QFileInfo( QCoreApplication::applicationFilePath() ).absoluteDir();
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
QString engineExe = QFileInfo( QCoreApplication::applicationFilePath() ).absoluteDir().absoluteFilePath("JASPEngine");
QStringList args;
args << QString::number(no);
#ifdef __WIN32__
env.insert("PATH", programDir.absoluteFilePath("R-3.0.0\\library\\RInside\\libs\\i386") + ";" + programDir.absoluteFilePath("R-3.0.0\\library\\Rcpp\\libs\\i386") + ";" + programDir.absoluteFilePath("R-3.0.0\\bin\\i386"));
unsigned long processId = Process::currentPID();
args << QString::number(processId);
#elif __APPLE__
env.insert("DYLD_LIBRARY_PATH", programDir.absoluteFilePath("R-3.0.0/lib"));
#else
env.insert("LD_LIBRARY_PATH", programDir.absoluteFilePath("R-3.0.0/lib") + ";" + programDir.absoluteFilePath("R-3.0.0/library/RInside/lib") + ";" + programDir.absoluteFilePath("R-3.0.0/library/Rcpp/lib"));
#endif
env.insert("R_HOME", programDir.absoluteFilePath("R-3.0.0"));
QProcess *slave = new QProcess(this);
slave->setProcessEnvironment(env);
slave->start(engineExe, args);
_slaveProcesses.push_back(slave);
connect(slave, SIGNAL(readyReadStandardOutput()), this, SLOT(subProcessStandardOutput()));
connect(slave, SIGNAL(readyReadStandardError()), this, SLOT(subProcessStandardError()));
connect(slave, SIGNAL(error(QProcess::ProcessError)), this, SLOT(subProcessError(QProcess::ProcessError)));
connect(slave, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(subprocessFinished(int,QProcess::ExitStatus)));
connect(slave, SIGNAL(started()), this, SLOT(subProcessStarted()));
}
示例7: getAURPackageList
/*
* Returns a string containing all AUR packages given a searchString parameter
*/
QByteArray UnixCommand::getAURPackageList(const QString &searchString)
{
QByteArray result("");
QProcess aur;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("LANG", "C");
env.insert("LC_MESSAGES", "C");
aur.setProcessEnvironment(env);
if (UnixCommand::getLinuxDistro() == ectn_KAOS)
aur.start(StrConstants::getForeignRepositoryToolName() + " -l ");
else
aur.start(StrConstants::getForeignRepositoryToolName() + " -Ss " + searchString);
aur.waitForFinished(-1);
result = aur.readAll();
if (UnixCommand::getLinuxDistro() == ectn_KAOS)
{
QString res = result;
res.remove("\033");
res.remove("[1m");
res.remove("[m");
res.remove("[1;32m");
res.remove("[1;34m");
res.remove("[1;36m");
return res.toLatin1();
}
return result;
}
示例8: chain
void QNetCtlTool::chain()
{
QProcess *proc = static_cast<QProcess*>(sender());
const QString tag = proc->property("QNetCtlTag").toString();
const QString info = proc->property("QNetCtlInfo").toString();
if (proc->exitStatus() != QProcess::NormalExit || proc->exitCode()) {
myClient->call(QDBus::NoBlock, "reply", tag, QString("ERROR: %1, %2").arg(proc->exitStatus()).arg(proc->exitCode()));
return;
}
myClient->call(QDBus::NoBlock, "reply", tag, QString::fromLocal8Bit(proc->readAllStandardOutput()));
QString cmd;
if (tag == "remove_profile") {
QFile::remove(gs_profilePath + info);
} else if (tag == "scan_wifi") {
myScanningDevices.removeAll(info);
myUplinkingDevices.removeAll(info);
cmd = TOOL(ip) + " link set " + info + " down";
}
if (cmd.isNull()) // should not happen
return;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.remove("LC_ALL");
env.remove("LANG");
proc = new QProcess(this);
proc->setProcessEnvironment(env);
// proc->setProperty("QNetCtlTag", tag);
// connect (proc, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(reply()));
connect (proc, SIGNAL(finished(int, QProcess::ExitStatus)), proc, SLOT(deleteLater()));
proc->start(cmd, QIODevice::ReadOnly);
}
示例9: startServer
void ServerManager::startServer(int id) const
{
QStringList args = QCoreApplication::arguments();
args.removeFirst();
if (id < 0) {
id = startCounter;
}
TWebApplication::MultiProcessingModule mpm = Tf::app()->multiProcessingModule();
if (mpm == TWebApplication::Hybrid || mpm == TWebApplication::Thread) {
if (id < maxServers) {
args.prepend(QString::number(id));
args.prepend("-i"); // give ID for app server
}
}
if (listeningSocket > 0) {
args.prepend(QString::number(listeningSocket));
args.prepend("-s");
}
QProcess *tfserver = new QProcess;
serversStatus.insert(tfserver, id);
connect(tfserver, SIGNAL(started()), this, SLOT(updateServerStatus()));
connect(tfserver, SIGNAL(error(QProcess::ProcessError)), this, SLOT(errorDetect(QProcess::ProcessError)));
connect(tfserver, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(serverFinish(int, QProcess::ExitStatus)));
connect(tfserver, SIGNAL(readyReadStandardError()), this, SLOT(readStandardError())); // For error notification
#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN)
// Sets LD_LIBRARY_PATH environment variable
QString ldpath = "."; // means the lib dir
QString sysldpath = QProcess::systemEnvironment().filter("LD_LIBRARY_PATH=", Qt::CaseSensitive).value(0).mid(16);
if (!sysldpath.isEmpty()) {
ldpath += ":";
ldpath += sysldpath;
}
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("LD_LIBRARY_PATH", ldpath);
tSystemDebug("export %s=%s", "LD_LIBRARY_PATH", qPrintable(ldpath));
QString preload = Tf::appSettings()->value(Tf::LDPreload).toString();
if (!preload.isEmpty()) {
env.insert("LD_PRELOAD", preload);
tSystemDebug("export %s=%s", "LD_PRELOAD", qPrintable(preload));
}
tfserver->setProcessEnvironment(env);
#endif
// Executes treefrog server
tfserver->start(TFSERVER_CMD, args, QIODevice::ReadOnly);
tfserver->closeReadChannel(QProcess::StandardOutput);
tfserver->closeWriteChannel();
tSystemDebug("tfserver started");
++startCounter;
}
示例10: update
void SearchPluginManager::update()
{
QProcess nova;
nova.setProcessEnvironment(QProcessEnvironment::systemEnvironment());
const QStringList params {Utils::Fs::toNativePath(engineLocation() + "/nova2.py"), "--capabilities"};
nova.start(Utils::ForeignApps::pythonInfo().executableName, params, QIODevice::ReadOnly);
nova.waitForFinished();
const QString capabilities = nova.readAll();
QDomDocument xmlDoc;
if (!xmlDoc.setContent(capabilities)) {
qWarning() << "Could not parse Nova search engine capabilities, msg: " << capabilities.toLocal8Bit().data();
qWarning() << "Error: " << nova.readAllStandardError().constData();
return;
}
const QDomElement root = xmlDoc.documentElement();
if (root.tagName() != "capabilities") {
qWarning() << "Invalid XML file for Nova search engine capabilities, msg: " << capabilities.toLocal8Bit().data();
return;
}
for (QDomNode engineNode = root.firstChild(); !engineNode.isNull(); engineNode = engineNode.nextSibling()) {
const QDomElement engineElem = engineNode.toElement();
if (!engineElem.isNull()) {
const QString pluginName = engineElem.tagName();
std::unique_ptr<PluginInfo> plugin {new PluginInfo {}};
plugin->name = pluginName;
plugin->version = getPluginVersion(pluginPath(pluginName));
plugin->fullName = engineElem.elementsByTagName("name").at(0).toElement().text();
plugin->url = engineElem.elementsByTagName("url").at(0).toElement().text();
const auto categories = engineElem.elementsByTagName("categories").at(0).toElement().text().split(' ');
for (QString cat : categories) {
cat = cat.trimmed();
if (!cat.isEmpty())
plugin->supportedCategories << cat;
}
const QStringList disabledEngines = Preferences::instance()->getSearchEngDisabled();
plugin->enabled = !disabledEngines.contains(pluginName);
updateIconPath(plugin.get());
if (!m_plugins.contains(pluginName)) {
m_plugins[pluginName] = plugin.release();
emit pluginInstalled(pluginName);
}
else if (m_plugins[pluginName]->version != plugin->version) {
delete m_plugins.take(pluginName);
m_plugins[pluginName] = plugin.release();
emit pluginUpdated(pluginName);
}
}
}
}
示例11: startProcess
/*
* Initialize and launch process object
*/
bool AbstractTool::startProcess(QProcess &process, const QString &program, const QStringList &args)
{
static AssignProcessToJobObjectFun AssignProcessToJobObjectPtr = NULL;
QMutexLocker lock(m_mutex_startProcess);
emit messageLogged(commandline2string(program, args) + "\n");
QProcessEnvironment env = process.processEnvironment();
if(env.isEmpty()) env = QProcessEnvironment::systemEnvironment();
env.insert("TEMP", QDir::toNativeSeparators(lamexp_temp_folder2()));
env.insert("TMP", QDir::toNativeSeparators(lamexp_temp_folder2()));
process.setProcessEnvironment(env);
if(!AssignProcessToJobObjectPtr)
{
QLibrary Kernel32Lib("kernel32.dll");
AssignProcessToJobObjectPtr = (AssignProcessToJobObjectFun) Kernel32Lib.resolve("AssignProcessToJobObject");
}
process.setProcessChannelMode(QProcess::MergedChannels);
process.setReadChannel(QProcess::StandardOutput);
process.start(program, args);
if(process.waitForStarted())
{
if(AssignProcessToJobObjectPtr)
{
AssignProcessToJobObjectPtr(m_handle_jobObject, process.pid()->hProcess);
}
if(!SetPriorityClass(process.pid()->hProcess, BELOW_NORMAL_PRIORITY_CLASS))
{
SetPriorityClass(process.pid()->hProcess, IDLE_PRIORITY_CLASS);
}
lock.unlock();
if(m_firstLaunch)
{
emit statusUpdated(0);
m_firstLaunch = false;
}
return true;
}
emit messageLogged("Process creation has failed :-(");
QString errorMsg= process.errorString().trimmed();
if(!errorMsg.isEmpty()) emit messageLogged(errorMsg);
process.kill();
process.waitForFinished(-1);
return false;
}
示例12: runMercurial
bool versionControl::runMercurial(QString options) {
if (!this->isMercurialThere)
return false;
QSettings settings;
// get current model path from QSettings
QString path = settings.value("files/currentFileName", "No model").toString();
if (path == "No model")
return false;
// set up the environment for the spawned processes
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("PATH", qgetenv("PATH"));
// to be used as a username if one is not set
env.insert("EMAIL", QHostInfo::localHostName());
// make the QProcess
QProcess * mercurial = new QProcess;
mercurial->setWorkingDirectory(QDir::toNativeSeparators(path));
mercurial->setProcessEnvironment(env);
connect(mercurial, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(finished(int, QProcess::ExitStatus)));
connect(mercurial, SIGNAL(readyReadStandardOutput()), this, SLOT(standardOutput()));
connect(mercurial, SIGNAL(readyReadStandardError()), this, SLOT(standardError()));
// clear stdOut & stdErr texts
stdOutText.clear();
stdErrText.clear();
// launch
mercurial->start("hg " + options);
// wait until complete, or 3 s
bool noerror = mercurial->waitForFinished(3000);
if (noerror) {
// check output
if (mercurial->exitCode() == 0) {
delete mercurial;
return true;
} else {
delete mercurial;
return false;
}
}
delete mercurial;
return false;
}
示例13: startProcess
void LSession::startProcess(QString ID, QString command){
QString logfile = QDir::homePath()+"/.lumina/logs/"+ID+".log";
if(QFile::exists(logfile+".old")){ QFile::remove(logfile+".old"); }
if(QFile::exists(logfile)){ QFile::rename(logfile,logfile+".old"); }
QProcess *proc = new QProcess();
proc->setProcessChannelMode(QProcess::MergedChannels);
proc->setProcessEnvironment( QProcessEnvironment::systemEnvironment() );
proc->setStandardOutputFile(logfile);
proc->start(command, QIODevice::ReadOnly);
connect(proc, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(procFinished()) );
PROCS << proc;
}
示例14: isPkgfileInstalled
/*
* Check if pkgfile is installed on the system
*/
bool UnixCommand::isPkgfileInstalled()
{
QProcess pkgfile;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
pkgfile.setProcessEnvironment(env);
pkgfile.start("pkgfile -V");
pkgfile.waitForFinished();
return pkgfile.exitStatus() == QProcess::NormalExit;
}
示例15: start
bool OpenModelica::start(QString exeFile,QString &errMsg,int maxnsec)
{
QFileInfo exeFileInfo(exeFile);
QString exeDir = exeFileInfo.absolutePath();
if(!QFile::exists(exeFile))
{
errMsg = "Cannot find model executable file : " + exeFile;
return false;
}
QProcess simProcess;
simProcess.setWorkingDirectory(exeDir);
#ifdef WIN32
QString appPath = "\""+exeFile+"\"";
// add OM path in PATH
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
QString omHome = env.value("OpenModelicaHome");
omHome = omHome+QDir::separator()+"bin";
QString mingw = env.value("OpenModelicaHome");
mingw = mingw+QDir::separator()+"MinGW"+QDir::separator()+"bin";
env.insert("PATH", env.value("Path") + ";"+omHome+";"+mingw);
simProcess.setProcessEnvironment(env);
//start process
simProcess.start(appPath, QStringList());
#else
QStringList arguments;
arguments << "-c";
arguments << "./"+exeFileInfo.fileName() << " > log.txt";
simProcess.start("sh", arguments);
#endif
int nmsec;
if(maxnsec==-1)
nmsec = -1;
else
nmsec = maxnsec*1000;
bool ok = simProcess.waitForFinished(nmsec);
if(!ok)
{
errMsg = "Simulation process failed or time limit reached";
simProcess.close();
return false;
}
QString output(simProcess.readAllStandardOutput());
InfoSender::instance()->send(Info(output,ListInfo::OMCNORMAL2));
return ok;
}