Описание класса QProcessКласс QProcess используется для запуска внешних программ и связи с ними. Далее... #include <QProcess> Унаследован от: QIODevice. Замечание: Все функции в этом классе реентерабельны. Открытые типы
Открытые функции
Переопределённые открытые функции
Открытые слоты
Сигналы
Статические открытые члены
Защищенные функции
Переопределённые защищённые функции
Связанные нечлены класса
Дополнительные унаследованные члены
Подробное описаниеКласс QProcess используется для запуска внешних программ и связи с ними. Запуск процессаДля запуска процесса передайте имя и параметры командной строки той программы, которую вы хотите запустить, в качестве аргумента в start(). Аргументы поставляются как отдельные строки в QStringList. Например, следующий фрагмент кода запускает пример аналоговых часов в стиле Motif на платформах X11, передавая строки, содержащие "-style" и "motif" как два элемента в списке аргументов: QObject *parent; ... QString program = "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; arguments << "-style" << "motif"; QProcess *myProcess = new QProcess(parent); myProcess->start(program, arguments); Вслед за этим QProcess переходит в состояние Starting, а после запуска программы QProcess переходит в состояние Running и посылает сигнал started(). QProcess позволяет вам рассматривать процесс как последовательное устройство ввода/вывода. Вы можете писать и читать из процесса так же, как если бы имели доступ к сетевому соединению, используя QTcpSocket. Вы можете писать в стандартный ввод процесса с помощью write() и читать из стандартного вывода с помощью read(), readLine() и getChar(). Поскольку он наследуется от QIODevice, QProcess может быть также использован как источник ввода для QXmlReader или для формирования данных, которые должны быть загружены при помощи QFtp. Замечание: В Windows CE и Symbian чтение и запись в процесс не поддерживаются. Когда процесс завершается, QProcess повторно входит в состояние NotRunning (исходное состояние) и посылает сигнал finished(). Сигнал finished() предоставляет код выхода и статус выхода процесса как аргументы, но вы можете также вызвать exitCode() для получения кода выхода последнего завершившегося процесса и exitStatus() для получения статуса выхода. Если в любой момент времени возникает ошибка, то QProcess пошлёт сигнал error(). Вы также можете вызвать error() для определения типа последней возникшей ошибки и state() для определения текущего состояния процесса. Общение через каналыПроцессы имеют два предопределённых канала вывода: стандартный канал вывода (stdout) предоставляет обычный консольный вывод, а стандартный канал ошибок (stderr) обычно предоставляет ошибки, которые печатаются процессом. Эти каналы представляют собой два отдельных потока данных. Вы можете переключаться между ними, вызывая setReadChannel(). QProcess посылает сигнал readyRead(), когда в текущем канале чтения доступны данные. Он также посылает сигнал readyReadStandardOutput(), когда доступны новые данные в стандартном канале вывода, а когда доступны новые данные в стандартном канале ошибок, посылается сигнал readyReadStandardError(). Вместо вызова read(), readLine() или getChar() вы можете явно прочитать все данные из любого из двух каналов, вызывая readAllStandardOutput() или readAllStandardError(). Терминология для каналов может вводить в заблуждение. Знайте, что каналы вывода процесса соответствуют каналам чтения QProcess, в то время как каналы ввода процесса соответствуют каналам записи QProcess. Это происходит потому, что с использованием QProcess мы читаем вывод процесса, а то, что мы пишем, попадает на вход процесса. QProcess может объединить два выходных канала так, чтобы данные как со стандартного канала вывода, так и со стандартного канала ошибок запущенного процесса использовали канал стандартного вывода. Эту возможность активирует вызов setProcessChannelMode() с аргументом MergedChannels. Также вы имеете возможность перенаправить вывод запущенного процесса в вызывающий, основной, процесс, передав в качестве аргумента ForwardedChannels. Некоторые процессы требуют специальных настроек окружения для работы. Вы можете установить переменные окружения для вашего процесса, вызвав setEnvironment(). Для установки рабочего каталога вызовите setWorkingDirectory(). По умолчанию процессы выполняются в текущем рабочем каталоге вызывающего процесса. Замечание: В Symbian установка окружения и рабочего каталога не поддерживаются. Рабочий каталог всегда будет частным каталогом выполняемого процесса. Замечание: В QNX установка рабочего каталога может вызвать временное замораживание всех потоков приложения, за исключением потока, вызывающего QProcess, из-за ограничений операционной системы. API синхронных процессовQProcess предоставляет набор функций, которые позволяют использовать его без цикла обработки событий, приостанавливая вызывающий поток до момента посылки определённых сигналов:
Вызов этих функций из основного потока (потока, в котором был вызов QApplication::exec()) может привести к замораживанию пользовательского интерфейса. В следующем примере запускается gzip для сжатия строки "Qt rocks!" без использования цикла событий: QProcess gzip; gzip.start("gzip", QStringList() << "-c"); if (!gzip.waitForStarted()) return false; gzip.write("Qt rocks!"); gzip.closeWriteChannel(); if (!gzip.waitForFinished()) return false; QByteArray result = gzip.readAll(); Примечания для пользователей WindowsНекоторые команды Windows (например, dir) выполняются не отдельными программами, а непосредственно командным интерпретатором. Если вы попытаетесь использовать QProcess для выполнения этих команд напрямую, то это не будет работать. Одним из возможных решений является выполнение командным интерпретатором самого себя (cmd.exe в некоторых системах Windows) и запрос на выполнение интерпретатором требуемой команды. Требования платформы Symbian к безопасностиВ Symbian процессы, которые используют функции kill() или terminate(), должны иметь мандат безопасности платформы PowerMgmt. Если клиентский процесс не имеет такой возможности, то функции не будут работать. Возможности безопасности платформы добавляются через переменную TARGET.CAPABILITY qmake. Смотрите также QBuffer, QFile и QTcpSocket. Описание типов-членовenum QProcess::ExitStatusДанное перечисление описывает различные статусы выхода QProcess.
Смотрите также exitStatus(). enum QProcess::ProcessChannelДанное перечисление описывает каналы процесса, которые используются запущенным процессом. Передайте одно из этих значений в setReadChannel() для установки текущего канала чтения QProcess.
Смотрите также setReadChannel(). enum QProcess::ProcessChannelModeДанное перечисление описывает режимы каналов процесса QProcess. Передайте одно из этих значений в setProcessChannelMode() для установки текущего режима чтения канала.
Смотрите также setProcessChannelMode(). enum QProcess::ProcessErrorДанное перечисление описывает различные типы ошибок, о которых сообщает QProcess.
Смотрите также error(). enum QProcess::ProcessStateДанное перечисление описывает различные состояния QProcess.
Смотрите также state(). Описание функций-членовQProcess::QProcess ( QObject * parent = 0 )Создаёт объект QProcess с заданным родителем parent. QProcess::~QProcess () [virtual]Уничтожает объект QProcess, т.е. убивает процесс. Заметьте, что эта функция не вернёт управление до тех пор, пока процесс не завершится. bool QProcess::atEnd () const [virtual]Переопределено из QIODevice::atEnd(). Возвращает true, если процесс не запущен и больше нет данных для чтения; в противном случае возвращает false. qint64 QProcess::bytesAvailable () const [virtual]Переопределено из QIODevice::bytesAvailable(). qint64 QProcess::bytesToWrite () const [virtual]Переопределено из QIODevice::bytesToWrite(). bool QProcess::canReadLine () const [virtual]Переопределено из QIODevice::canReadLine(). Эта функция работает на текущем канале чтения. Смотрите также readChannel() и setReadChannel(). void QProcess::close () [virtual]Переопределено из QIODevice::close(). Закрывает все связи с процессом и убивает его. После вызова этой функции QProcess больше не пошлёт сигнал readyRead(), а данные больше не смогут быть прочитаны или записаны. void QProcess::closeReadChannel ( ProcessChannel channel )Закрывает канал чтения channel. После вызова этой функции QProcess больше не будет получать данные по каналу. Любые данные, которые уже были получены, по-прежнему доступны для чтения. Вызывайте эту функцию для сохранения памяти, если вы не заинтересованы в выводе процесса. Смотрите также closeWriteChannel() и setReadChannel(). void QProcess::closeWriteChannel ()Помечает, что канал записи QProcess должен быть закрыт. Канал будет закрыт, как только все данные будут записаны в процесс. После вызова этой функции любые попытки записи в процесс завершаются ошибкой. Закрытие канала записи необходимо для программ, которые читают входные данные до тех пор, пока канал не закрыт. Например, программа "more" используется для отображения текстовых данных на консоли в Unix и Windows. Но она не будет отображать текстовые данные, пока канал записи QProcess не закрыт. Пример: QProcess more; more.start("more"); more.write("Text to display"); more.closeWriteChannel(); // QProcess пошлёт сигнал readyRead(), как только "more" начнёт печатать Канал записи неявно открывается при вызове start(). Смотрите также closeReadChannel(). QStringList QProcess::environment () constЭта функция устарела. Возвращает окружение, которое QProcess будет использовать при запуске процесса, или пустой QStringList, если окружение не было установлено при помощи setEnvironment() или setEnvironmentHash(). Если окружение не было установлено, будет использоваться окружение вызывающего процесса. Замечание: Настройки окружения игнорируются в Windows CE и Symbian, поскольку там нет понятия окружения. Смотрите также processEnvironment(), setEnvironment() и systemEnvironment(). QProcess::ProcessError QProcess::error () constВозвращает тип ошибки, которая произошла последней. Смотрите также state(). void QProcess::error ( QProcess::ProcessError error ) [signal]Этот сигнал посылается при возникновении ошибки в процессе. Указанный error описывает тип произошедшей ошибки. int QProcess::execute ( const QString & program, const QStringList & arguments ) [static]Запускает программу program с параметрами arguments в новом процессе, ожидает её завершения, а затем возвращает код возврата в процесс. Любые данные, которые процесс записывает в консоль, перенаправляются вызывающему процессу. Окружение и рабочая директория наследуются от вызывающего процесса. В Windows параметры, которые содержат пробелы, обрамляются кавычками. Если процесс не может быть запущен, то возвращается -2. Если процесс аварийно завершается, то возвращается -1. В противном случае возвращается код выхода процесса. int QProcess::execute ( const QString & program ) [static]Это перегруженная функция. Запускает программу program в новом процессе. program является одной текстовой строкой, содержащей как название программы, так и параметры. Параметры разделяются одним или несколькими пробелами. int QProcess::exitCode () constВозвращает код выхода последнего завершившегося процесса. QProcess::ExitStatus QProcess::exitStatus () constВозвращает статус выхода последнего завершившегося процесса. В Windows, если процесс был прерван при помощи TerminateProcess() из другой программы, эта функция будет возвращать NormalExit, если только код выхода не меньше 0. Эта функция была введена в Qt 4.1. void QProcess::finished ( int exitCode, QProcess::ExitStatus exitStatus ) [signal]Этот сигнал посылается, когда процесс завершается. exitCode содержит код выхода процесса, а exitStatus - статус выхода. После завершения процесса буферы в QProcess остаются нетронутыми. Вы всё ещё можете прочитать любые данные, которые процесс мог записать перед выходом. Смотрите также exitStatus(). bool QProcess::isSequential () const [virtual]Переопределено из QIODevice::isSequential(). void QProcess::kill () [slot]Убивает текущий процесс, в результате чего он немедленно завершается. В Windows kill() использует TerminateProcess, а в Unix и Mac OS X процессу отправляется сигнал SIGKILL. В Symbian эта функция требует мандата безопасности платформы PowerMgmt. При его отсутствии процесс вызовет панику с кодом KERN-EXEC 46. Замечание: Убийство запущенного процесса из любого другого запущенного процесса, как правило, будет вызывать панику в Symbian из-за безопасности платформы. Смотрите также Требования платформы Symbian к безопасности и terminate(). QString QProcess::nativeArguments () constВозвращает дополнительные родные параметры командной строк для программы. Замечание: Эта функция доступна только на платформах Windows и Symbian. Эта функция была введена в Qt 4.7. Смотрите также setNativeArguments(). Q_PID QProcess::pid () constВозвращает собственный идентификатор процесса для текущего процесса, если это доступно. Если в данный момент процесс не запущен, то будет возвращён 0. ProcessChannelMode QProcess::processChannelMode () constВозвращает режим канала для стандартного канала вывода и стандартного канала ошибок QProcess. Эта функция была введена в Qt 4.2. Смотрите также setProcessChannelMode(), ProcessChannelMode и setReadChannel(). QProcessEnvironment QProcess::processEnvironment () constВозвращает окружение, которое QProcess будет использовать при запуске процесса, или пустой объект, если окружение не было установлено при помощи setEnvironment() или setProcessEnvironment(). Если окружение не было установлено, будет использоваться окружение вызывающего процесса. Замечание: Настройки окружения игнорируются в Windows CE, поскольку там нет понятия окружения. Эта функция была введена в Qt 4.6. Смотрите также setProcessEnvironment(), setEnvironment() и QProcessEnvironment::isEmpty(). QByteArray QProcess::readAllStandardError ()Независимо от текущего канала чтения эта функция возвращает все данные, доступные из стандартного канала ошибок процесса, как QByteArray. Смотрите также readyReadStandardError(), readAllStandardOutput(), readChannel() и setReadChannel(). QByteArray QProcess::readAllStandardOutput ()Независимо от текущего канала чтения эта функция возвращает все данные, доступные из стандартного канала вывода процесса, как QByteArray. Смотрите также readyReadStandardOutput(), readAllStandardError(), readChannel() и setReadChannel(). ProcessChannel QProcess::readChannel () constВозвращает текущий канал чтения QProcess. Смотрите также setReadChannel(). qint64 QProcess::readData ( char * data, qint64 maxlen ) [virtual protected]Переопределено из QIODevice::readData(). void QProcess::readyReadStandardError () [signal]Этот сигнал посылается, когда процесс сделал доступными новые данные в своём канале стандартных ошибок (stderr). Он посылается независимо от текущего канала чтения. Смотрите также readAllStandardError() и readChannel(). void QProcess::readyReadStandardOutput () [signal]Этот сигнал посылается, когда процесс сделал доступными новые данные в своём канале стандартного вывода (stdout). Он посылается независимо от текущего канала чтения. Смотрите также readAllStandardOutput() и readChannel(). void QProcess::setEnvironment ( const QStringList & environment )Эта функция устарела. Устанавливает окружение, которое QProcess будет использовать при запуске процесса, в указанный environment, который содержит список пар key=value. Например, следующий код добавляет каталог C:\\BIN в список путей с исполняемыми файлами (PATHS) в Windows: QProcess process; QStringList env = QProcess::systemEnvironment(); env << "TMPDIR=C:\\MyApp\\temp"; // Добавляет переменную окружения env.replaceInStrings(QRegExp("^PATH=(.*)", Qt::CaseInsensitive), "PATH=\\1;C:\\Bin"); process.setEnvironment(env); process.start("myapp"); Замечание: Эта функция является менее эффективной, чем функция setProcessEnvironment(). Смотрите также environment(), setProcessEnvironment() и systemEnvironment(). void QProcess::setNativeArguments ( const QString & arguments )Это перегруженная функция. Устанавливает дополнительные родные параметры командной строки arguments для программы. В операционных системах, в которых системный API для передачи аргументов командной строки в подпроцесс изначально использует одну строку, можно себе представить командную строку, которая не может быть передана через переносимый, основанный на списках API QProcess. В этих случаях должна использоваться эта функция для установки строки, которая будет добавлена к строке, состоящей из обычного списка аргументов, и отделена пробелом. Замечание: Эта функция доступна только на платформах Windows и Symbian. Эта функция была введена в Qt 4.7. Смотрите также nativeArguments(). void QProcess::setProcessChannelMode ( ProcessChannelMode mode )Устанавливает режим канала стандартного канала вывода и стандартного канала ошибок QProcess в указанный режим mode. Этот режим будет использован при следующем вызове start(). Например: QProcess builder; builder.setProcessChannelMode(QProcess::MergedChannels); builder.start("make", QStringList() << "-j2"); if (!builder.waitForFinished()) qDebug() << "Make failed:" << builder.errorString(); else qDebug() << "Make output:" << builder.readAll(); Эта функция была введена в Qt 4.2. Смотрите также processChannelMode(), ProcessChannelMode и setReadChannel(). void QProcess::setProcessEnvironment ( const QProcessEnvironment & environment )Устанавливает окружение, которое QProcess будет использовать при запуске процесса, в environment. Например, следующий код добавляет каталог C:\\BIN в список путей с исполняемыми файлами (PATHS) в Windows и устанавливает TMPDIR: QProcess process; QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); env.insert("TMPDIR", "C:\\MyApp\\temp"); // Добавляет переменную окружения env.insert("PATH", env.value("Path") + ";C:\\Bin"); process.setProcessEnvironment(env); process.start("myapp"); Заметьте, что в Windows имена переменных окружения нечувствительны к регистру. Эта функция была введена в Qt 4.6. Смотрите также processEnvironment(), QProcessEnvironment::systemEnvironment() и setEnvironment(). void QProcess::setProcessState ( ProcessState state ) [protected]Устанавливает текущее состояние процесса QProcess в указанное состояние state. Смотрите также state(). void QProcess::setReadChannel ( ProcessChannel channel )Устанавливает текущий канал чтения QProcess в заданный channel. Текущий канал ввода используется функциями read(), readAll(), readLine() и getChar(). Это также определяет, какой канал заставляет QProcess посылать сигнал readyRead(). Смотрите также readChannel(). void QProcess::setStandardErrorFile ( const QString & fileName, OpenMode mode = Truncate )Перенаправляет стандартные ошибки процесса в файл fileName. Когда перенаправление установлено, канал чтения стандартных ошибок закрывается: чтение из него с использованием read(), так же как и с использованием readAllStandardError(), будет всегда возвращать ошибку. Файл будет дополняться, если mode равен Append, в противном случае он будет усечён. Для получения дополнительной информации о том, как будет открыт файл, смотрите setStandardOutputFile(). Замечание: если setProcessChannelMode() была вызвана с аргументом QProcess::MergedChannels, то эта функция не окажет никакого эффекта. Эта функция была введена в Qt 4.2. Смотрите также setStandardInputFile(), setStandardOutputFile() и setStandardOutputProcess(). void QProcess::setStandardInputFile ( const QString & fileName )Перенаправляет стандартный ввод процесса в указанный файл fileName. Когда перенаправление вывода установлено, объект QProcess будет находиться в режиме только для чтения (вызов write() будет завершаться с ошибкой). Если файл fileName не существует на момент вызова start(), или он не читается, запуск процесса завершится с ошибкой. Вызов setStandardInputFile() после запуска процесса не имеет эффекта. Эта функция была введена в Qt 4.2. Смотрите также setStandardOutputFile(), setStandardErrorFile() и setStandardOutputProcess(). void QProcess::setStandardOutputFile ( const QString & fileName, OpenMode mode = Truncate )Перенаправляет стандартный вывод процесса в файл fileName. Когда перенаправление установлено, канал чтения стандартного вывода закрывается: чтение из него с использованием read(), так же как и readAllStandardOutput(), будет всегда возвращать ошибку. Если файл fileName не существует на момент вызова start(), то он будет создан. Если он не сможет быть создан, то при запуске возникнет ошибка. Если файл существует и режим mode равен QIODevice::Truncate, то файл будет усечён. В противном случае (если режим mode равен QIODevice::Append) файл будет дополнен. Вызов setStandardOutputFile() после запуска процесса не имеет эффекта. Эта функция была введена в Qt 4.2. Смотрите также setStandardInputFile(), setStandardErrorFile() и setStandardOutputProcess(). void QProcess::setStandardOutputProcess ( QProcess * destination )Передает по конвейеру поток стандартного вывода этого процесса на стандартный ввод процесса destination. Следующая команда оболочки: command1 | command2
может быть выполнена при помощи QProcess следующим кодом: QProcess process1; QProcess process2; process1.setStandardOutputProcess(&process2); process1.start("command1"); process2.start("command2"); Эта функция была введена в Qt 4.2. void QProcess::setWorkingDirectory ( const QString & dir )Устанавливает рабочий каталог в dir. QProcess будет запускать процесс в этом каталоге. По умолчанию процесс запускается в рабочем каталоге вызывающего процесса. Замечание: Установка рабочего каталога игнорируется в Symbian; частный каталог процесса считается его рабочим каталогом. Замечание: В QNX это может привести к временному замораживанию всех потоков приложения. Смотрите также workingDirectory() и start(). void QProcess::setupChildProcess () [virtual protected]Эта функция вызывается в контексте дочернего процесса непосредственно перед тем, как программа будет запущена в Unix или Mac OS X (т.е. после fork(), но перед execve()). Переопределите эту функцию для последней инициализации дочернего процесса. Пример: class SandboxProcess : public QProcess { ... protected: void setupChildProcess(); ... }; void SandboxProcess::setupChildProcess() { // Удаляет все привилегии в дочернем процессе и входит // в изоляцию chroot. #if defined Q_OS_UNIX ::setgroups(0, 0); ::chroot("/etc/safe"); ::chdir("/"); ::setgid(safeGid); ::setuid(safeUid); ::umask(0); #endif } Вы не сможете выйти из процесса (вызовом exit(), например) в этой функции. Если вам необходимо выйти из программы перед тем, как она начала выполняться, то обходным путём будет посылка сигнала finished() и затем вызов exit(). Предупреждение: Эта функция вызывается QProcess только в Unix и Mac OS X. В Windows и QNX она не вызывается. void QProcess::start ( const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite )Запускает указанную программу program в новом процессе, если нет уже запущенных, и передаёт параметры командной строки, содержащиеся в arguments. OpenMode устанавливается в mode. Объект QProcess сразу переходит в состояние Starting. Если процесс успешно запущен, то QProcess посылает сигнал started(); в противном случае будет послан сигнал error(). Если объект QProcess уже выполняет процесс, то в консоли может быть распечатано предупреждение, и существующий процесс будет продолжать выполнение. Замечание: Процессы запускаются асинхронно, так что сигналы started() и error() могут прийти с задержкой. Вызовите waitForStarted(), чтобы убедиться, что процесс был запущен (или запуск завершился ошибкой), и эти сигналы были посланы. Замечание: Никакого дополнительного разделения аргументов не производится. Windows: Параметры, которые содержат пробелы, обрамляются кавычками. Смотрите также pid(), started() и waitForStarted(). void QProcess::start ( const QString & program, OpenMode mode = ReadWrite )Это перегруженная функция. Запускает программу program в новом процессе, если нет уже запущенных. program является одной текстовой строкой, содержащей как название программы, так и параметры. Параметры разделяются одним или несколькими пробелами. Например: QProcess process; process.start("del /s *.txt"); // то же самое, что и process.start("del", QStringList() << "/s" << "*.txt"); ... Строка program также может содержать кавычки, чтобы гарантировать, что параметры, содержащие пробелы, корректно поступают в новый процесс. Например: QProcess process; process.start("dir \"My Documents\""); Если объект QProcess уже выполняет процесс, то в консоли может быть распечатано предупреждение, и существующий процесс будет продолжать выполнение. Заметьте, что в Windows кавычки нужно экранировать и заключить в кавычки. Например, приведённый выше код должен быть определён следующим образом, чтобы гарантировать, что "My Documents" используется как параметр при выполнении dir: QProcess process; process.start("dir \"\"\"My Documents\"\"\""); OpenMode устанавливается в mode. bool QProcess::startDetached ( const QString & program, const QStringList & arguments, const QString & workingDirectory, qint64 * pid = 0 ) [static]Запускает программу program с параметрами arguments в новом процессе и отсоединяется от неё. Возвращает true, если всё прошло успешно; в противном случае возвращает false. Если вызывающий процесс завершается, то отсоединённый процесс будет продолжать жить. Заметьте, что параметры, содержащие пробелы, не передаются в процесс как отдельные параметры. Unix: Запущенный процесс будет работать в своей собственной сессии и будет действовать, как демон. Windows: Параметры, которые содержат пробелы, обрамляются кавычками. Запущенный процесс будет работать, как обычный автономный процесс. Процесс будет запущен в каталоге workingDirectory. Замечание: В QNX это может привести к временному замораживанию всех потоков приложения. Если функция выполняется успешно, то в *pid заносится идентификатор запущенного процесса. bool QProcess::startDetached ( const QString & program, const QStringList & arguments ) [static]Запускает программу program с указанными параметрами arguments в новом процессе и отсоединяется от неё. Возвращает true, если всё прошло успешно; в противном случае возвращает false. Если вызывающий процесс завершается, то отсоединённый процесс будет продолжать жить. Замечание: Параметры, содержащие пробелы, не передаются в процесс как отдельные параметры. Unix: Запущенный процесс будет работать в своей собственной сессии и будет действовать, как демон. Windows: Параметры, которые содержат пробелы, обрамляются кавычками. Запущенный процесс будет работать, как обычный автономный процесс. bool QProcess::startDetached ( const QString & program ) [static]Это перегруженная функция. Запускает программу program в новом процессе. program является одной текстовой строкой, содержащей как название программы, так и параметры. Параметры разделяются одним или несколькими пробелами. Строка program также может содержать кавычки, чтобы гарантировать, что параметры, содержащие пробелы, корректно поступают в новый процесс. void QProcess::started () [signal]Этот сигнал посылается QProcess, когда процесс запущен, а state() возвращает Running. QProcess::ProcessState QProcess::state () constВозвращает текущее состояние процесса. Смотрите также stateChanged() и error(). void QProcess::stateChanged ( QProcess::ProcessState newState ) [signal]Этот сигнал посылается, когда состояние QProcess изменяется. Аргумент newState содержит новое состояние QProcess. QStringList QProcess::systemEnvironment () [static]Возвращает окружение вызывающего процесса как список пар key=value. Пример: QStringList environment = QProcess::systemEnvironment(); // environment = {"PATH=/usr/bin:/usr/local/bin", // "USER=greg", "HOME=/home/greg"} Эта функция не кэширует системное окружение. Таким образом, она позволяет получить обновлённую версию окружения, если были вызваны низкоуровневые функции библиотеки C, подобные setenv или putenv. Однако заметьте, что повторные вызовы этой функции будут пересоздавать список переменных окружения, что является нетривиальной операцией. Замечание: Для нового кода рекомендуется использовать QProcessEnvironment::systemEnvironment() Эта функция была введена в Qt 4.1. Смотрите также QProcessEnvironment::systemEnvironment(), environment() и setEnvironment(). void QProcess::terminate () [slot]Пытается завершить процесс. Процесс может не выйти в результате вызова этой функции (он получает шанс запросить у пользователя сохранение любых несохранённых файлов и т.д.). В Windows terminate() отправляет сообщение WM_CLOSE всем окнам верхнего уровня, а затем главному потоку самого процесса. В Unix и Mac OS X отправляется сигнал SIGTERM. Консольные приложения в Windows, у которых не запущен цикл обработки событий или цикл обработки событий которых не обрабатывает сообщение WM_CLOSE, могут быть завершены только вызовом kill(). В Symbian эта функция требует мандата безопасности платформы PowerMgmt. При его отсутствии процесс вызовет панику с кодом KERN-EXEC 46. Замечание: Завершение запущенного процесса из любого другого запущенного процесса, как правило, будет вызывать панику в Symbian из-за безопасности платформы. Смотрите также Требования платформы Symbian к безопасности и kill(). bool QProcess::waitForBytesWritten ( int msecs = 30000 ) [virtual]Переопределено из QIODevice::waitForBytesWritten(). bool QProcess::waitForFinished ( int msecs = 30000 )Блокирует выполнение до тех пор, пока процесс не завершится, и не будет отправлен сигнал finished(), или пока не истечёт msecs миллисекунд. Возвращает true, если процесс завершился; в противном случае возвращает false (если истекло время, если произошла ошибка, если QProcess уже завершён). Эта функция может работать без цикла обработки событий. Это полезно при написании неграфических приложений и при выполнении операций ввода/вывода вне графического потока. Предупреждение: Вызов этой функции из главного (ГИП) потока может привести к замораживанию пользовательского интерфейса. Если задать время тайм-аута как -1, таймер будет отключён. Смотрите также finished(), waitForStarted(), waitForReadyRead() и waitForBytesWritten(). bool QProcess::waitForReadyRead ( int msecs = 30000 ) [virtual]Переопределено из QIODevice::waitForReadyRead(). bool QProcess::waitForStarted ( int msecs = 30000 )Блокирует выполнение до тех пор, пока процесс не запустится, и не будет отправлен сигнал started(), или пока не истечёт msecs миллисекунд. Возвращает true, если процесс был успешно запущен; в противном случае возвращает false (если истекло время или если возникла ошибка). Эта функция может работать без цикла обработки событий. Это полезно при написании неграфических приложений и при выполнении операций ввода/вывода вне графического потока. Предупреждение: Вызов этой функции из главного (ГИП) потока может привести к замораживанию пользовательского интерфейса. Если задать время тайм-аута как -1, таймер будет отключён. Смотрите также started(), waitForReadyRead(), waitForBytesWritten() и waitForFinished(). QString QProcess::workingDirectory () constЕсли QProcess был назначен рабочий каталог, то эта функция возвращает рабочий каталог, в который будет входить QProcess перед запуском программы. В противном случае (т.е. если каталог не был назначен) будет возвращена пустая строка, а QProcess будет использовать вместо этого текущий рабочий каталог приложения. Смотрите также setWorkingDirectory(). qint64 QProcess::writeData ( const char * data, qint64 len ) [virtual protected]Переопределено из QIODevice::writeData(). Связанные нечлены классаtypedef Q_PIDПсевдоним типа для идентификаторов, использующихся для представления процессов на поддерживаемых платформах. В Unix и Symbian он соответствует qint64; в Windows он соответствует _PROCESS_INFORMATION*. Смотрите также QProcess::pid(). |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |