basic_pstream, basic_ipstream, basic_opstream

Александр Коновалов
Александр Коновалов

В C++ сейчас есть довольно ограниченный функционал по запуску процессов и работе с ними. Предлагаю для этого добавить классы basic_pstream, basic_ipstream и basic_opstream. Предполагается, что они должны работать в рамках существующей системы потоков. Видится, что они будут во многом похожи на аналогичные для файлов. Также выглядит разумным добавить в них дополнительные методы для работы с процессами:

wait - ожидать окончания работы процесса, а после вернуть код возврата.

terminate - завершить процесс.

kill - убить процесс.

is_runned - запущен ли процесс.

exit_code - код возврата завершённого процесса (не знаю, что возвращать, если процесс ещё не завершён).

Аналогичный функционал есть в Qt (представлен классом QProcess), python  (модуль subprocess, в частности класс subprocess.Popen). В принципе, идея появилась на основе их. Не исключаю, что м.б. ещё что полезное у них найти или в других языках, имеющих схожий функционал.

6
рейтинг
2 комментария
yndx-antoshkka

Человек, разивающий Boost.Process, имеет планы на добавление его в стандарт.

При работе с процессами многие хотят асинхронную работу с pipe, так что перед приняеим Boost.Process в стандарт должны принять в стандарт Executors и Networking

yndx-antoshkka
Александр Коновалов

yndx-antoshkka, спасибо. Полистал бегло документацию. Действиттельно довольно удобная штука. Единственное, нашёл только "жесткое" завершение процесса. Хотелось бы ещё и "мягкое". В любом случае, будем ждать.

Александр Коновалов
Обновлено 
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения