Описание класса QProcess
|
enum | ExitStatus { NormalExit, CrashExit } |
enum | ProcessChannel { StandardOutput, StandardError } |
enum | ProcessChannelMode { SeparateChannels, MergedChannels, ForwardedChannels } |
enum | ProcessError { FailedToStart, Crashed, Timedout, WriteError, ReadError, UnknownError } |
enum | ProcessState { NotRunning, Starting, Running } |
QProcess ( QObject * parent = 0 ) | |
virtual | ~QProcess () |
void | closeReadChannel ( ProcessChannel channel ) |
void | closeWriteChannel () |
QStringList | environment () const (устаревшая) |
QProcess::ProcessError | error () const |
int | exitCode () const |
QProcess::ExitStatus | exitStatus () const |
Q_PID | pid () const |
ProcessChannelMode | processChannelMode () const |
QProcessEnvironment | processEnvironment () const |
QByteArray | readAllStandardError () |
QByteArray | readAllStandardOutput () |
ProcessChannel | readChannel () const |
void | setEnvironment ( const QStringList & environment ) (устаревшая) |
void | setProcessChannelMode ( ProcessChannelMode mode ) |
void | setProcessEnvironment ( const QProcessEnvironment & environment ) |
void | setReadChannel ( ProcessChannel channel ) |
void | setStandardErrorFile ( const QString & fileName, OpenMode mode = Truncate ) |
void | setStandardInputFile ( const QString & fileName ) |
void | setStandardOutputFile ( const QString & fileName, OpenMode mode = Truncate ) |
void | setStandardOutputProcess ( QProcess * destination ) |
void | setWorkingDirectory ( const QString & dir ) |
void | start ( const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite ) |
void | start ( const QString & program, OpenMode mode = ReadWrite ) |
QProcess::ProcessState | state () const |
bool | waitForFinished ( int msecs = 30000 ) |
bool | waitForStarted ( int msecs = 30000 ) |
QString | workingDirectory () const |
virtual bool | atEnd () const |
virtual qint64 | bytesAvailable () const |
virtual qint64 | bytesToWrite () const |
virtual bool | canReadLine () const |
virtual void | close () |
virtual bool | isSequential () const |
virtual bool | waitForBytesWritten ( int msecs = 30000 ) |
virtual bool | waitForReadyRead ( int msecs = 30000 ) |
void | kill () |
void | terminate () |
void | error ( QProcess::ProcessError error ) |
void | finished ( int exitCode, QProcess::ExitStatus exitStatus ) |
void | readyReadStandardError () |
void | readyReadStandardOutput () |
void | started () |
void | stateChanged ( QProcess::ProcessState newState ) |
int | execute ( const QString & program, const QStringList & arguments ) |
int | execute ( const QString & program ) |
bool | startDetached ( const QString & program, const QStringList & arguments, const QString & workingDirectory, qint64 * pid = 0 ) |
bool | startDetached ( const QString & program, const QStringList & arguments ) |
bool | startDetached ( const QString & program ) |
QStringList | systemEnvironment () |
void | setProcessState ( ProcessState state ) |
virtual void | setupChildProcess () |
virtual qint64 | readData ( char * data, qint64 maxlen ) |
virtual qint64 | writeData ( const char * data, qint64 len ) |
typedef | Q_PID |
Класс 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 установка окружения и рабочего каталога не поддерживаются. Рабочий каталог всегда будет частным каталогом выполняемого процесса.
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 (например, dir) выполняются не отдельными программами, а непосредственно командным интерпретатором. Если вы попытаетесь использовать QProcess для выполнения этих команд напрямую, то это не будет работать. Одним из возможных решений является выполнение командным интерпретатором самого себя (cmd.exe в некоторых системах Windows) и запрос на выполнение интерпретатором требуемой команды.
В Symbian процессы, которые используют функции kill() или terminate(), должны иметь мандат безопасности платформы PowerMgmt. Если клиентский процесс не имеет такой возможности, то функции не будут работать.
Возможности безопасности платформы добавляются через переменную TARGET.CAPABILITY qmake.
Смотрите также QBuffer, QFile и QTcpSocket.
Данное перечисление описывает различные статусы выхода QProcess.
Константа | Значение | Описание |
---|---|---|
QProcess::NormalExit | 0 | Процесс завершился нормально. |
QProcess::CrashExit | 1 | Процесс завершился аварийно. |
Смотрите также exitStatus().
Данное перечисление описывает каналы процесса, которые используются запущенным процессом. Передайте одно из этих значений в setReadChannel() для установки текущего канала чтения QProcess.
Константа | Значение | Описание |
---|---|---|
QProcess::StandardOutput | 0 | Стандартный вывод (stdout) запущенного процесса. |
QProcess::StandardError | 1 | Стандартные ошибки (stderr) запущенного процесса. |
Смотрите также setReadChannel().
Данное перечисление описывает режимы каналов процесса QProcess. Передайте одно из этих значений в setProcessChannelMode() для установки текущего режима чтения канала.
Константа | Значение | Описание |
---|---|---|
QProcess::SeparateChannels | 0 | QProcess управляет выводом запущенного процесса, сохраняя данные стандартного вывода и стандартных ошибок в раздельных внутренних буферах. Вы можете выбрать текущий канал чтения QProcess вызовом setReadChannel(). Это режим канала QProcess по умолчанию. |
QProcess::MergedChannels | 1 | QProcess объединяет вывод запущенного процесса в стандартный канал вывода (stdout). Стандартный канал ошибок (stderr) не будет получать никаких данных. Данные стандартного канала вывода и стандартного канала ошибок запущенного процесса чередуются. |
QProcess::ForwardedChannels | 2 | QProcess перенаправляет вывод запущенного процесса в основной процесс. Всё, что дочерний процесс записывает в стандартный канал вывода и стандартный канал ошибок, будет записано в стандартный канал вывода и стандартный канал ошибок основного процесса. |
Смотрите также setProcessChannelMode().
Данное перечисление описывает различные типы ошибок, о которых сообщает QProcess.
Константа | Значение | Описание |
---|---|---|
QProcess::FailedToStart | 0 | Не удалось запустить процесс. Либо вызываемая программа отсутствует, либо у вас не хватает прав для её запуска. |
QProcess::Crashed | 1 | Процесс аварийно завершился через некоторое время после успешного запуска. |
QProcess::Timedout | 2 | Последняя вызванная функция waitFor...() завершилась по таймауту. Состояние QProcess не изменилось, и вы можете попробовать вызвать waitFor...() ещё раз. |
QProcess::WriteError | 4 | Произошла ошибка при попытке записи в процесс. Например, процесс может быть не запущен, или он мог закрыть канал ввода. |
QProcess::ReadError | 3 | Произошла ошибка при попытке чтения из процесса. Например, процесс может быть не запущен. |
QProcess::UnknownError | 5 | Произошла неизвестная ошибка. Это значение возвращается функцией error() по умолчанию. |
Смотрите также error().
Данное перечисление описывает различные состояния QProcess.
Константа | Значение | Описание |
---|---|---|
QProcess::NotRunning | 0 | Процесс не запущен. |
QProcess::Starting | 1 | Процесс запущен, но программа ещё не была вызвана. |
QProcess::Running | 2 | Процесс выполняется и готов к чтению и записи. |
Смотрите также state().
Создаёт объект QProcess с заданным родителем parent.
Уничтожает объект QProcess, т.е. убивает процесс.
Заметьте, что эта функция не вернёт управление до тех пор, пока процесс не завершится.
Переопределено из QIODevice::atEnd().
Возвращает true, если процесс не запущен и больше нет данных для чтения; в противном случае возвращает false.
Переопределено из QIODevice::bytesAvailable().
Переопределено из QIODevice::bytesToWrite().
Переопределено из QIODevice::canReadLine().
Эта функция работает на текущем канале чтения.
Смотрите также readChannel() и setReadChannel().
Переопределено из QIODevice::close().
Закрывает все связи с процессом и убивает его. После вызова этой функции QProcess больше не пошлёт сигнал readyRead(), а данные больше не смогут быть прочитаны или записаны.
Закрывает канал чтения channel. После вызова этой функции QProcess больше не будет получать данные по каналу. Любые данные, которые уже были получены, по-прежнему доступны для чтения.
Вызывайте эту функцию для сохранения памяти, если вы не заинтересованы в выводе процесса.
Смотрите также closeWriteChannel() и setReadChannel().
Помечает, что канал записи QProcess должен быть закрыт. Канал будет закрыт, как только все данные будут записаны в процесс. После вызова этой функции любые попытки записи в процесс завершаются ошибкой.
Закрытие канала записи необходимо для программ, которые читают входные данные до тех пор, пока канал не закрыт. Например, программа "more" используется для отображения текстовых данных на консоли в Unix и Windows. Но она не будет отображать текстовые данные, пока канал записи QProcess не закрыт. Пример:
QProcess more;
more.start("more");
more.write("Text to display");
more.closeWriteChannel();
// QProcess пошлёт сигнал readyRead(), как только "more" начнёт печатать
Канал записи неявно открывается при вызове start().
Смотрите также closeReadChannel().
Эта функция устарела.
Возвращает окружение, которое QProcess будет использовать при запуске процесса, или пустой QStringList, если окружение не было установлено при помощи setEnvironment() или setEnvironmentHash(). Если окружение не было установлено, будет использоваться окружение вызывающего процесса.
Замечание: Настройки окружения игнорируются в Windows CE и Symbian, поскольку там нет понятия окружения.
Смотрите также processEnvironment(), setEnvironment() и systemEnvironment().
Возвращает тип ошибки, которая произошла последней.
Смотрите также state().
Этот сигнал посылается при возникновении ошибки в процессе. Указанный error описывает тип произошедшей ошибки.
Запускает программу program с параметрами arguments в новом процессе, ожидает её завершения, а затем возвращает код возврата в процесс. Любые данные, которые процесс записывает в консоль, перенаправляются вызывающему процессу.
Окружение и рабочая директория наследуются от вызывающего процесса.
В Windows параметры, которые содержат пробелы, обрамляются кавычками.
Это перегруженная функция.
Запускает программу program в новом процессе. program является одной текстовой строкой, содержащей как название программы, так и параметры. Параметры разделяются одним или несколькими пробелами.
Возвращает код выхода последнего завершившегося процесса.
Возвращает статус выхода последнего завершившегося процесса.
В Windows, если процесс был прерван при помощи TerminateProcess() из другой программы, эта функция будет возвращать NormalExit, если только код выхода не меньше 0.
Эта функция была введена в Qt 4.1.
Этот сигнал посылается, когда процесс завершается. exitCode содержит код выхода процесса, а exitStatus - статус выхода. После завершения процесса буферы в QProcess остаются нетронутыми. Вы всё ещё можете прочитать любые данные, которые процесс мог записать перед выходом.
Смотрите также exitStatus().
Переопределено из QIODevice::isSequential().
Убивает текущий процесс, в результате чего он немедленно завершается.
В Windows kill() использует TerminateProcess, а в Unix и Mac OS X процессу отправляется сигнал SIGKILL.
В Symbian эта функция требует мандата безопасности платформы PowerMgmt. При его отсутствии процесс вызовет панику с кодом KERN-EXEC 46.
Смотрите также Требования платформы Symbian к безопасности и terminate().
Возвращает собственный идентификатор процесса для текущего процесса, если это доступно. Если в данный момент процесс не запущен, то будет возвращён 0.
Возвращает режим канала для стандартного канала вывода и стандартного канала ошибок QProcess.
Эта функция была введена в Qt 4.2.
Смотрите также setProcessChannelMode(), ProcessChannelMode и setReadChannel().
Возвращает окружение, которое QProcess будет использовать при запуске процесса, или пустой объект, если окружение не было установлено при помощи setEnvironment() или setProcessEnvironment(). Если окружение не было установлено, будет использоваться окружение вызывающего процесса.
Замечание: Настройки окружения игнорируются в Windows CE, поскольку там нет понятия окружения.
Эта функция была введена в Qt 4.6.
Смотрите также setProcessEnvironment(), setEnvironment() и QProcessEnvironment::isEmpty().
Независимо от текущего канала чтения эта функция возвращает все данные, доступные из стандартного канала ошибок процесса, как QByteArray.
Смотрите также readyReadStandardError(), readAllStandardOutput(), readChannel() и setReadChannel().
Независимо от текущего канала чтения эта функция возвращает все данные, доступные из стандартного канала вывода процесса, как QByteArray.
Смотрите также readyReadStandardOutput(), readAllStandardError(), readChannel() и setReadChannel().
Возвращает текущий канал чтения QProcess.
Смотрите также setReadChannel().
Переопределено из QIODevice::readData().
Этот сигнал посылается, когда процесс сделал доступными новые данные в своём канале стандартных ошибок (stderr). Он посылается независимо от текущего канала чтения.
Смотрите также readAllStandardError() и readChannel().
Этот сигнал посылается, когда процесс сделал доступными новые данные в своём канале стандартного вывода (stdout). Он посылается независимо от текущего канала чтения.
Смотрите также readAllStandardOutput() и readChannel().
Эта функция устарела.
Устанавливает окружение, которое 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().
Устанавливает режим канала стандартного канала вывода и стандартного канала ошибок 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().
Устанавливает окружение, которое 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().
Устанавливает текущее состояние процесса QProcess в указанное состояние state.
Смотрите также state().
Устанавливает текущий канал чтения QProcess в заданный channel. Текущий канал ввода используется функциями read(), readAll(), readLine() и getChar(). Это также определяет, какой канал заставляет QProcess посылать сигнал readyRead().
Смотрите также readChannel().
Перенаправляет стандартные ошибки процесса в файл fileName. Когда перенаправление установлено, канал чтения стандартных ошибок закрывается: чтение из него с использованием read(), так же как и с использованием readAllStandardError(), будет всегда возвращать ошибку. Файл будет дополняться, если mode равен Append, в противном случае он будет усечён.
Для получения дополнительной информации о том, как будет открыт файл, смотрите setStandardOutputFile().
Замечание: если setProcessChannelMode() была вызвана с аргументом QProcess::MergedChannels, то эта функция не окажет никакого эффекта.
Эта функция была введена в Qt 4.2.
Смотрите также setStandardInputFile(), setStandardOutputFile() и setStandardOutputProcess().
Перенаправляет стандартный ввод процесса в указанный файл fileName. Когда перенаправление вывода установлено, объект QProcess будет находиться в режиме только для чтения (вызов write() будет завершаться с ошибкой).
Если файл fileName не существует на момент вызова start(), или он не читается, запуск процесса завершится с ошибкой.
Вызов setStandardInputFile() после запуска процесса не имеет эффекта.
Эта функция была введена в Qt 4.2.
Смотрите также setStandardOutputFile(), setStandardErrorFile() и setStandardOutputProcess().
Перенаправляет стандартный вывод процесса в файл fileName. Когда перенаправление установлено, канал чтения стандартного вывода закрывается: чтение из него с использованием read(), так же как и readAllStandardOutput(), будет всегда возвращать ошибку.
Если файл fileName не существует на момент вызова start(), то он будет создан. Если он не сможет быть создан, то при запуске возникнет ошибка.
Если файл существует и режим mode равен QIODevice::Truncate, то файл будет усечён. В противном случае (если режим mode равен QIODevice::Append) файл будет дополнен.
Вызов setStandardOutputFile() после запуска процесса не имеет эффекта.
Эта функция была введена в Qt 4.2.
Смотрите также setStandardInputFile(), setStandardErrorFile() и setStandardOutputProcess().
Передает по конвейеру поток стандартного вывода этого процесса на стандартный ввод процесса destination.
Следующая команда оболочки:
command1 | command2
может быть выполнена при помощи QProcess следующим кодом:
QProcess process1; QProcess process2; process1.setStandardOutputProcess(&process2); process1.start("command1"); process2.start("command2");
Эта функция была введена в Qt 4.2.
Устанавливает рабочий каталог в dir. QProcess будет запускать процесс в этом каталоге. По умолчанию процесс запускается в рабочем каталоге вызывающего процесса.
Замечание: Установка рабочего каталога игнорируется в Symbian; частный каталог процесса считается его рабочим каталогом.
Смотрите также workingDirectory() и start().
Эта функция вызывается в контексте дочернего процесса непосредственно перед тем, как программа будет запущена в 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 она не вызывается.
Запускает программу program в новом процессе, если нет уже запущенных, и передаёт параметры командной строки, содержащиеся в arguments. OpenMode устанавливается в mode.
Объект QProcess сразу переходит в состояние Starting. Если процесс успешно запущен, то QProcess посылает сигнал started(); в противном случае будет послан сигнал error(). Если объект QProcess уже выполняет процесс, то в консоли может быть распечатано предупреждение, и существующий процесс будет продолжать выполнение.
Замечание: Параметры, содержащие пробелы, не передаются в процесс как отдельные параметры.
Замечание: Процессы запускаются асинхронно, так что сигналы started() и error() могут прийти с задержкой. Вызовите waitForStarted(), чтобы убедиться, что процесс был запущен (или запуск завершился ошибкой), и эти сигналы были посланы.
Windows: Параметры, которые содержат пробелы, обрамляются кавычками.
Смотрите также pid(), started() и waitForStarted().
Это перегруженная функция.
Запускает программу 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.
Запускает программу program с параметрами arguments в новом процессе и отсоединяется от неё. Возвращает true, если всё прошло успешно; в противном случае возвращает false. Если вызывающий процесс завершается, то отсоединённый процесс будет продолжать жить.
Заметьте, что параметры, содержащие пробелы, не передаются в процесс как отдельные параметры.
Unix: Запущенный процесс будет работать в своей собственной сессии и будет действовать, как демон.
Windows: Параметры, которые содержат пробелы, обрамляются кавычками. Запущенный процесс будет работать, как обычный автономный процесс.
Процесс будет запущен в каталоге workingDirectory.
Если функция выполняется успешно, то в *pid заносится идентификатор запущенного процесса.
Запускает программу program с указанными параметрами arguments в новом процессе и отсоединяется от неё. Возвращает true, если всё прошло успешно; в противном случае возвращает false. Если вызывающий процесс завершается, то отсоединённый процесс будет продолжать жить.
Замечание: Параметры, содержащие пробелы, не передаются в процесс как отдельные параметры.
Unix: Запущенный процесс будет работать в своей собственной сессии и будет действовать, как демон.
Windows: Параметры, которые содержат пробелы, обрамляются кавычками. Запущенный процесс будет работать, как обычный автономный процесс.
Это перегруженная функция.
Запускает программу program в новом процессе. program является одной текстовой строкой, содержащей как название программы, так и параметры. Параметры разделяются одним или несколькими пробелами.
Строка program также может содержать кавычки, чтобы гарантировать, что параметры, содержащие пробелы, корректно поступают в новый процесс.
Этот сигнал посылается QProcess, когда процесс запущен, а state() возвращает Running.
Возвращает текущее состояние процесса.
Смотрите также stateChanged() и error().
Этот сигнал посылается, когда состояние QProcess изменяется. Аргумент newState содержит новое состояние QProcess.
Возвращает окружение вызывающего процесса как список пар key=value. Пример:
QStringList environment = QProcess::systemEnvironment(); // environment = {"PATH=/usr/bin:/usr/local/bin", // "USER=greg", "HOME=/home/greg"}
Эта функция не кэширует системное окружение. Таким образом, она позволяет получить обновлённую версию окружения, если были вызваны низкоуровневые функции библиотеки C, подобные setenv или putenv.
Однако заметьте, что повторные вызовы этой функции будут пересоздавать список переменных окружения, что является нетривиальной операцией.
Замечание: Для нового кода рекомендуется использовать QProcessEvironment::systemEnvironment()
Эта функция была введена в Qt 4.1.
Смотрите также QProcessEnvironment::systemEnvironment(), environment() и setEnvironment().
Пытается завершить процесс.
Процесс может не выйти в результате вызова этой функции (он получает шанс запросить у пользователя сохранение любых несохранённых файлов и т.д.).
В Windows terminate() отправляет сообщение WM_CLOSE всем окнам верхнего уровня, а затем главному потоку самого процесса. В Unix и Mac OS X отправляется сигнал SIGTERM.
Консольные приложения в Windows, у которых не запущен цикл обработки событий или цикл обработки событий которых не обрабатывает сообщение WM_CLOSE, могут быть завершены только вызовом kill().
В Symbian эта функция требует мандата безопасности платформы PowerMgmt. При его отсутствии процесс вызовет панику с кодом KERN-EXEC 46.
Замечание: Завершение запущенного процесса из любого другого запущенного процесса, как правило, будет вызывать панику в Symbian из-за безопасности платформы.
Смотрите также Требования платформы Symbian к безопасности и kill().
Переопределено из QIODevice::waitForBytesWritten().
Блокирует выполнение до тех пор, пока процесс не завершится, и не будет отправлен сигнал finished(), или пока не истечёт msecs миллисекунд.
Возвращает true, если процесс завершился; в противном случае возвращает false (если истекло время, если произошла ошибка, если QProcess уже завершён).
Эта функция может работать без цикла обработки событий. Это полезно при написании неграфических приложений и при выполнении операций ввода/вывода вне графического потока.
Предупреждение: Вызов этой функции из главного (ГИП) потока может привести к замораживанию пользовательского интерфейса.
Если задать время тайм-аута как -1, таймер будет отключён.
Смотрите также finished(), waitForStarted(), waitForReadyRead() и waitForBytesWritten().
Переопределено из QIODevice::waitForReadyRead().
Блокирует выполнение до тех пор, пока процесс не запустится, и не будет отправлен сигнал started(), или пока не истечёт msecs миллисекунд.
Возвращает true, если процесс был успешно запущен; в противном случае возвращает false (если истекло время или если возникла ошибка).
Эта функция может работать без цикла обработки событий. Это полезно при написании неграфических приложений и при выполнении операций ввода/вывода вне графического потока.
Предупреждение: Вызов этой функции из главного (ГИП) потока может привести к замораживанию пользовательского интерфейса.
Если задать время тайм-аута как -1, таймер будет отключён.
Смотрите также started(), waitForReadyRead(), waitForBytesWritten() и waitForFinished().
Если QProcess был назначен рабочий каталог, то эта функция возвращает рабочий каталог, в который будет входить QProcess перед запуском программы. В противном случае (т.е. если каталог не был назначен) будет возвращена пустая строка, а QProcess будет использовать вместо этого текущий рабочий каталог приложения.
Смотрите также setWorkingDirectory().
Переопределено из QIODevice::writeData().
Псевдоним типа для идентификаторов, использующихся для представления процессов на поддерживаемых платформах. В Unix и Symbian он соответствует qint64; в Windows он соответствует _PROCESS_INFORMATION*.
Смотрите также QProcess::pid().
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |