![]() |
PIP 5.5.3
Platform-Independent Primitives
|
Класс для управления внешними процессами Подробнее...
#include <piprocess.h>
Открытые члены | |
| PIProcess () | |
| Создает пустой PIProcess. | |
| int | exitCode () const |
| Возвращает код завершения последнего выполнения | |
| int | pID () const |
| Возвращает ID процесса текущего выполнения | |
| PIString | workingDirectory () const |
| Возвращает рабочую директорию выполнения или пустую строку, если не установлена | |
| void | setWorkingDirectory (const PIString &path) |
| Устанавливает рабочую директорию для выполнения | |
| void | resetWorkingDirectory () |
| Сбрасывает рабочую директорию, будет использоваться директория приложения | |
| PIByteArray | readOutput () |
| Возвращает весь вывод из стандартного потока вывода (stdout) | |
| PIByteArray | readError () |
| Возвращает весь вывод из потока ошибок (stderr) | |
| bool | writeInput (const PIByteArray &data) |
| Записывает данные в стандартный поток ввода (stdin) | |
| void | closeInput () |
| Закрывает поток ввода (stdin) и отправляет EOF. | |
| void | enableWriteStdIn (bool on=true) |
| Включает или отключает запись в стандартный поток ввода (stdin) процесса | |
| void | enableReadStdOut (bool on=true) |
| Включает или отключает чтение из стандартного потока вывода (stdout) процесса | |
| void | enableReadStdErr (bool on=true) |
| Включает или отключает чтение из потока ошибок (stderr) процесса | |
| PIStringList | environment () |
| Возвращает текущее окружение выполнения | |
| void | clearEnvironment () |
| Очищает окружение выполнения. Вызывать перед exec() | |
| void | removeEnvironmentVariable (const PIString &variable) |
| Удаляет переменную "variable" из окружения выполнения. Вызывать перед exec() | |
| void | setEnvironmentVariable (const PIString &variable, const PIString &value) |
| Устанавливает значение "value" для переменной "variable" в окружении выполнения. Вызывать перед exec() | |
| void | exec (const PIString &program, const PIString &arg) |
| Запускает выполнение "program" с одним аргументом "arg". | |
| bool | isExecFinished () const |
| Проверяет, завершилось ли выполнение процесса | |
| bool | isExecStarted () const |
| Проверяет, запущен ли процесс выполнения | |
Открытые члены унаследованные от PIThread | |
| PIThread (void *data, ThreadFunc func, bool startNow=false, PISystemTime loop_delay={}) | |
| Создает поток с данными "data", функцией "func" и задержкой цикла "loop_delay". | |
| PIThread (std::function< void()> func, bool startNow=false, PISystemTime loop_delay={}) | |
| Создает поток с функцией "func" и задержкой цикла "loop_delay". | |
| PIThread (bool startNow=false, PISystemTime loop_delay={}) | |
| Создает поток с задержкой цикла "loop_delay". | |
| bool | start () |
| Запускает поток | |
| bool | start (PISystemTime loop_delay) |
| Запускает поток | |
| bool | start (ThreadFunc func) |
| Запускает поток | |
| bool | start (ThreadFunc func, PISystemTime loop_delay) |
| Запускает поток | |
| bool | start (std::function< void()> func) |
| Запускает поток | |
| bool | start (std::function< void()> func, PISystemTime loop_delay) |
| Запускает поток | |
| bool | startOnce () |
| Запускает поток без внутреннего цикла Подробнее... | |
| bool | startOnce (ThreadFunc func) |
| Запускает поток без внутреннего цикла Подробнее... | |
| bool | startOnce (std::function< void()> func) |
| Запускает поток без внутреннего цикла | |
| bool | stopAndWait (PISystemTime timeout={}) |
| Останавливает поток и ожидает завершения. Возвращает false если таймаут истек. | |
| void | setData (void *d) |
| Устанавливает данные, передаваемые в функцию потока | |
| void | setSlot (ThreadFunc func) |
| Устанавливает функцию потока, вызываемую после каждого run() | |
| void | setSlot (std::function< void()> func) |
| Устанавливает функцию потока, вызываемую после каждого run() | |
| void | setPriority (PIThread::Priority prior) |
| Устанавливает приоритет потока | |
| void * | data () const |
| Возвращает данные, передаваемые в функцию потока | |
| PIThread::Priority | priority () const |
| Возвращает приоритет потока | |
| bool | isRunning () const |
| Возвращает исполняется ли поток | |
| bool | isStopping () const |
| Возвращает останавливается ли поток | |
| bool | waitForStart (PISystemTime timeout={}) |
| Ожидает старта потока | |
| bool | waitForStart (int timeout_msecs) DEPRECATEDM("use waitForStart(PISystemTime)") |
| bool | waitForFinish (PISystemTime timeout={}) |
| Ожидает завершения потока. Возвращает false если таймаут истек. | |
| bool | waitForFinish (int timeout_msecs) DEPRECATEDM("use waitForFinish(PISystemTime)") |
| void | needLockRun (bool need) |
| Устанавливает необходимость блокировки внутреннего мьютекса каждый run() | |
| PIMutex & | mutex () const |
| Возвращает внутренний мьютекс | |
| llong | tid () const |
| Возвращает ID потока | |
| void | stop () |
| Останавливает поток Подробнее... | |
| void | terminate () |
| Жёстко прерывает поток Подробнее... | |
| void | lock () const |
| Блокирует внутренний мьютекс | |
| void | unlock () const |
| Разблокирует внутренний мьютекс | |
| void | started () |
| Вызывается при старте потока | |
| void | stopped () |
| Вызывается при завершении потока | |
Открытые члены унаследованные от PIObject | |
| PIObject (const PIString &name=PIString()) | |
| Создает PIObject с именем "name". | |
| PIString | name () const |
| Возвращает имя объекта | |
| virtual const char * | className () const |
| Возвращает имя класса объекта | |
| virtual const char * | parentClassName () const |
| Возвращает имя родительского класса | |
| bool | debug () const |
| Возвращает включен ли вывод piCoutObj для этого объекта | |
| void | setName (const PIString &name) |
| Устанавливает имя объекта | |
| void | setDebug (bool debug) |
| Включает или отключает вывод piCoutObj для этого объекта | |
| PIVariant | property (const char *name) const |
| Возвращает свойство объекта по имени "name". | |
| void | setProperty (const char *name, const PIVariant &value) |
| Устанавливает у объекта свойство по имени "name" в "value". Если такого свойства нет, оно добавляется | |
| bool | isPropertyExists (const char *name) const |
| Возвращает присутствует ли свойство по имени "name". | |
| PIStringList | scopeList () const |
| Возвращает цепочку наследования объекта (вместе с классом самого объекта) | |
| void | piDisconnect (const PIString &sig, PIObject *dest, void *ev_h) |
| Разрывает все соединения от события "sig" к объекту "dest" и обработчику "ev_h". | |
| void | piDisconnect (const PIString &sig, PIObject *dest) |
| Разрывает все соединения от события "sig" к объекту "dest". | |
| void | piDisconnect (const PIString &sig) |
| Разрывает все соединения от события "sig". | |
| bool | isPIObject () const |
| Возвращает действительный ли это PIObject (проверяет подпись) | |
| template<typename T > | |
| bool | isTypeOf () const |
| Возвращает действительный ли это наследник PIObject типа "T" (проверяет подпись и имя класса) | |
| template<typename T > | |
| T * | cast () const |
| Возвращает преобразование к типу T если это действительный наследник типа "T" (проверяет через isTypeOf()), или "nullptr". | |
| void | callQueuedEvents () |
| Выполнить все отложенные события от CONNECTU_QUEUED соединений | |
| bool | maybeCallQueuedEvents () |
| Если было хотя бы одно CONNECTU_QUEUED соединение с исполнителем this, то выполнить события Подробнее... | |
| void | deleteLater () |
| Пометить объект на удаление Подробнее... | |
| void | deleted (PIObject *o) |
| Вызывается перед удалением объекта Подробнее... | |
Открытые статические члены | |
| static void | execIndependent (const PIString &program) |
| Запускает независимое выполнение "program" без аргументов | |
| static void | execIndependent (const PIString &program, const PIString &arg) |
| Запускает независимое выполнение "program" с одним аргументом "arg". | |
| static void | execIndependent (const PIString &program, const PIStringList &args) |
| Запускает независимое выполнение "program" с аргументами "args". | |
| static PIStringList | currentEnvironment () |
| Возвращает окружение текущего приложения | |
| static int | currentPID () |
| Возвращает ID процесса текущего приложения | |
| static PIString | getEnvironmentVariable (const PIString &variable) |
| Возвращает значение переменной "variable" из окружения приложения | |
Открытые статические члены унаследованные от PIThread | |
| static void | runOnce (PIObject *object, const char *handler, const PIString &name=PIString()) |
| Вызывает обработчик "handler" объекта "object" в отдельном потоке Подробнее... | |
| static void | runOnce (std::function< void()> func, const PIString &name=PIString()) |
| Вызывает лямбда-выражение "func" в отдельном потоке Подробнее... | |
Открытые статические члены унаследованные от PIObject | |
| static void | piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h) |
| Разрывает все соединения от события "sig" объекта "src" к объекту "dest" и обработчику "ev_h". | |
| static void | piDisconnect (PIObject *src, const PIString &sig, PIObject *dest) |
| Разрывает все соединения от события "sig" объекта "src" к объекту "dest". | |
| static void | piDisconnect (PIObject *src, const PIString &sig) |
| Разрывает все соединения от события "sig" объекта "src". | |
| static PIObject * | findByName (const PIString &name) |
| Returns PIObject* with name "name" or 0, if there is no object found. | |
| static bool | isPIObject (const PIObject *o) |
| Возвращает действительный ли "o" PIObject (проверяет подпись) | |
| template<typename T > | |
| static bool | isTypeOf (const PIObject *o) |
| Возвращает действительный ли "o" наследник PIObject типа "T" (проверяет подпись и имя класса) | |
Handlers | |
| void | exec (const PIString &program) |
| Запускает выполнение "program" без аргументов | |
| void | exec (const PIString &program, const PIStringList &args_) |
| Запускает выполнение "program" с аргументами "args". | |
| void | terminate () |
| Немедленно завершает выполнение | |
| bool | waitForFinish () |
| Ожидает завершения выполнения (максимум 60 секунд) | |
| bool | waitForFinish (PISystemTime timeout) |
| Ожидает завершения выполнения в течение "timeout_". | |
Events | |
| void | execStarted (PIString program) |
| Генерируется при запуске выполнения | |
| void | execFinished (PIString program, int exit_code) |
| Генерируется при завершении выполнения | |
Дополнительные унаследованные члены | |
Открытые типы унаследованные от PIThread | |
| enum | Priority { piLowerst , piLow , piNormal , piHigh , piHighest } |
| Приоритет потока Подробнее... | |
Защищенные члены унаследованные от PIThread | |
| virtual void | begin () |
| Метод выполняется один раз при старте потока | |
| virtual void | run () |
| Метод выполняется каждые "loop_delay" миллисекунд | |
| virtual void | end () |
| Метод выполняется один раз при остановке потока | |
Защищенные члены унаследованные от PIObject | |
| PIObject * | emitter () const |
| Возвращает PIObject* который вызвал это событие. Значение допустимо только из методов обработчиков событий | |
| virtual void | propertyChanged (const char *name) |
| Виртуальная функция, вызывается после изменения любого свойства. | |
Относящиеся к классу функции унаследованные от PIObject | |
| #define | piCoutObj |
| Макрос для условного (piDebug && PIObject::debug()) вывода в PICout(StdOut) для наследников PIObject. | |
| #define | piCerrObj |
| Макрос для условного (piDebug && PIObject::debug()) вывода в PICout(StdErr) для наследников PIObject. | |
| #define | PIOBJECT(name) |
| Необходимо использовать этот макрос после объявления класса для использования событийной системы и корректного вывода piCoutObj. | |
| #define | EVENT_HANDLER0(ret, name) ret name() |
| Объявляет обработчик событий с именем "name" и возвращаемым типом "ret", ret name() | |
| #define | EVENT_HANDLER1(ret, name, type0, var0) ret name(type0 var0) |
| Объявляет обработчик событий с именем "name" и возвращаемым типом "ret", ret name(type0 var0) | |
| #define | EVENT_HANDLER2(ret, name, type0, var0, type1, var1) ret name(type0 var0, type1 var1) |
| Объявляет обработчик событий с именем "name" и возвращаемым типом "ret", ret name(type0 var0, type1 var1) | |
| #define | EVENT_HANDLER3(ret, name, type0, var0, type1, var1, type2, var2) ret name(type0 var0, type1 var1, type2 var2) |
| Объявляет обработчик событий с именем "name" и возвращаемым типом "ret", ret name(type0 var0, type1 var1, type2 var2) | |
| #define | EVENT_HANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Объявляет обработчик событий с именем "name" и возвращаемым типом "ret", ret name(type0 var0, type1 var1, type2 var2,
type3 var3) | |
| #define | EVENT_HANDLER EVENT_HANDLER0 |
| Аналог EVENT_HANDLER0. | |
| #define | EVENT_VHANDLER0(ret, name) virtual ret name() |
| Объявляет виртуальный обработчик событий с именем "name" и возвращаемым типом "ret", virtual ret name() | |
| #define | EVENT_VHANDLER1(ret, name, type0, var0) virtual ret name(type0 var0) |
| Объявляет виртуальный обработчик событий с именем "name" и возвращаемым типом "ret", virtual ret name(type0 var0) | |
| #define | EVENT_VHANDLER2(ret, name, type0, var0, type1, var1) virtual ret name(type0 var0, type1 var1) |
| Объявляет виртуальный обработчик событий с именем "name" и возвращаемым типом "ret", virtual ret name(type0 var0, type1
var1) | |
| #define | EVENT_VHANDLER3(ret, name, type0, var0, type1, var1, type2, var2) virtual ret name(type0 var0, type1 var1, type2 var2) |
| Объявляет виртуальный обработчик событий с именем "name" и возвращаемым типом "ret", virtual ret name(type0 var0, type1
var1, type2 var2) | |
| #define | EVENT_VHANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Объявляет виртуальный обработчик событий с именем "name" и возвращаемым типом "ret", virtual ret name(type0 var0, type1
var1, type2 var2, type3 var3) | |
| #define | EVENT_VHANDLER EVENT_VHANDLER0 |
| Аналог EVENT_VHANDLER0. | |
| #define | EVENT0(name) void name(); |
| Объявляет событие с именем "name", void name();. | |
| #define | EVENT1(name, type0, var0) void name(type0 var0); |
| Объявляет событие с именем "name", void name(type0 var0);. | |
| #define | EVENT2(name, type0, var0, type1, var1) void name(type0 var0, type1 var1); |
| Объявляет событие с именем "name", void name(type0 var0, type1 var1);. | |
| #define | EVENT3(name, type0, var0, type1, var1, type2, var2) void name(type0 var0, type1 var1, type2 var2); |
| Объявляет событие с именем "name", void name(type0 var0, type1 var1, type2 var2);. | |
| #define | EVENT4(name, type0, var0, type1, var1, type2, var2, type3, var3) void name(type0 var0, type1 var1, type2 var2, type3 var3); |
| Объявляет событие с именем "name", void name(type0 var0, type1 var1, type2 var2, type3 var3);. | |
| #define | EVENT EVENT0 |
| Аналог EVENT0. | |
| #define | CONNECTU(src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest". Подробнее... | |
| #define | CONNECTU_QUEUED(src, event, dest, handler, performer) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest". Подробнее... | |
| #define | CONNECTL(src, event, functor) |
| Соединяет событие "event" объекта "src" к лямбда-функции "functor". Подробнее... | |
| #define | CONNECT0(ret, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" с проверкой наличия события и обработчика. Подробнее... | |
| #define | CONNECT1(ret, type0, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" с проверкой наличия события и обработчика. Подробнее... | |
| #define | CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" с проверкой наличия события и обработчика. Подробнее... | |
| #define | CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" с проверкой наличия события и обработчика. Подробнее... | |
| #define | CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" с проверкой наличия события и обработчика. Подробнее... | |
| #define | CONNECT CONNECT0 |
| Аналог CONNECT0. Подробнее... | |
| #define | WEAK_CONNECT0(ret, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" без проверки наличия события и обработчика. Подробнее... | |
| #define | WEAK_CONNECT1(ret, type0, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" без проверки наличия события и обработчика. Подробнее... | |
| #define | WEAK_CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" без проверки наличия события и обработчика. Подробнее... | |
| #define | WEAK_CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" без проверки наличия события и обработчика. Подробнее... | |
| #define | WEAK_CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" без проверки наличия события и обработчика. Подробнее... | |
| #define | WEAK_CONNECT WEAK_CONNECT0 |
| Аналог WEAK_CONNECT0. Подробнее... | |
| #define | DISCONNECT0(ret, src, event, dest, handler) |
| piDisconnect событие "event" объекта "src" от обработчика или события "handler" с возвращаемым типом "ret" объекта "dest" | |
| #define | DISCONNECT1(ret, type0, src, event, dest, handler) |
| piDisconnect событие "event" объекта "src" от обработчика или события "handler" с возвращаемым типом "ret" объекта "dest" | |
| #define | DISCONNECT2(ret, type0, type1, src, event, dest, handler) |
| piDisconnect событие "event" объекта "src" от обработчика или события "handler" с возвращаемым типом "ret" объекта "dest" | |
| #define | DISCONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| piDisconnect событие "event" объекта "src" от обработчика или события "handler" с возвращаемым типом "ret" объекта "dest" | |
| #define | DISCONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| piDisconnect событие "event" объекта "src" от обработчика или события "handler" с возвращаемым типом "ret" объекта "dest" | |
| #define | DISCONNECT DISCONNECT0 |
| Аналог DISCONNECT0. | |
| #define | HANDLER(handler) |
| Возвращает указатель на обработчик события "handler". | |
Класс для управления внешними процессами
Класс PIProcess предоставляет функциональность для создания, управления и взаимодействия с внешними процессами. Поддерживает как присоединенное выполнение (с полным контролем потоков ввода/вывода), так и независимое выполнение.
Основные возможности: