cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

basic_pstream, basic_ipstream, basic_opstream #361

Open apolukhin opened 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +8, -0 Автор идеи: Александр Коновалов

Классы ввода-вывода для работы с процессами.

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

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

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

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

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

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

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

apolukhin commented 3 years ago

yndx-antoshkka, 26 сентября 2018, 16:57 Человек, разивающий Boost.Process, имеет планы на добавление его в стандарт.

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

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

apolukhin commented 3 years ago

Автор Boost.Process взялся за дело: https://wg21.link/p1750