Skip to content

Реализация цепочки вызовов процессов

License

Notifications You must be signed in to change notification settings

bmstu-iu8-cpp-sem-3/lab-11-process

Repository files navigation

Лабораторная работа 11

Процесс — программа, которая выполняется в текущий момент. Стандарт ISO 9000:2000 определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

Задание

Написать программу на C++ для упрощения процесса сборки, установки и упаковки проектов основанных на конфигурационных файлах CMakeLists.txt.

Исполняемый файл программы должен иметь название builder и поддерживать следующие опции запуска:

$ ./builder --help
Usage: builder [options]
Allowed options:
  --help                    : выводим вспомогательное сообщение
  --config <Release|Debug>  : указываем конфигурацию сборки (по умолчанию Debug)
  --install                 : добавляем этап установки (в директорию _install)
  --pack                    : добавляем этап упаковки (в архив формата tar.gz)
  --timeout <count>         : указываем время ожидания (в секундах)

Примеры запуска программы с описанием эквивалентных запусков процессов программы CMake.

$ ./builder
<=>
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Debug
$ cmake --build _builds
$ ./builder --config Release
<=>
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Release
$ cmake --build _builds
$ ./builder --install
<=>
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Debug
$ cmake --build _builds
$ cmake --build _builds --target install
$ ./builder --pack
<=>
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Debug
$ cmake --build _builds
$ cmake --build _builds --target package
$ ./builder --install --pack
<=>
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Debug
$ cmake --build _builds
$ cmake --build _builds --target install
$ cmake --build _builds --target package
$ ./builder --timeout 500
<=>
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Debug
$ cmake --build _builds

Требования

  1. Для работы с процессами необходимо использовать библиотеку Boost.Process (см. документацию).

  2. В случае если время ожидания истекает, то программа завершает все дочерние запущенные процессы.

  3. Этап установки запускается, только в случае успешного завершения процесса сборки.

  4. Этап упаковки запускается, только в случаях успешного завершения процесса сборки и успешного завершения процесса установки.

  5. Стандартные потоки вывода дочерних процессов необходимо перенаправить в стандартный поток вывода родительского процесса исполняемого файла builder.

  6. Подключение библиотек Boost.Process и Async++ осуществить с использованием пакетного менеджера Hunter.

Рекомендации

  1. Для обработки параметров командной строки использовать компонент boost::program_options.

  2. Для реализации цепочки событий необходимо использовать библиотеку Async++ (см. документацию).

About

Реализация цепочки вызовов процессов

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published