Open apolukhin opened 3 years ago
yndx-antoshkka, 26 сентября 2018, 16:57 Человек, разивающий Boost.Process, имеет планы на добавление его в стандарт.
При работе с процессами многие хотят асинхронную работу с pipe, так что перед приняеим Boost.Process в стандарт должны принять в стандарт Executors и Networking
Александр Коновалов, 27 сентября 2018, 1:40 yndx-antoshkka, спасибо. Полистал бегло документацию. Действиттельно довольно удобная штука. Единственное, нашёл только "жесткое" завершение процесса. Хотелось бы ещё и "мягкое". В любом случае, будем ждать.
Автор Boost.Process взялся за дело: https://wg21.link/p1750
Перенос предложения: голоса +8, -0 Автор идеи: Александр Коновалов
Классы ввода-вывода для работы с процессами.
В C++ сейчас есть довольно ограниченный функционал по запуску процессов и работе с ними. Предлагаю для этого добавить классы basic_pstream, basic_ipstream и basic_opstream. Предполагается, что они должны работать в рамках существующей системы потоков. Видится, что они будут во многом похожи на аналогичные для файлов. Также выглядит разумным добавить в них дополнительные методы для работы с процессами:
wait - ожидать окончания работы процесса, а после вернуть код возврата.
terminate - завершить процесс.
kill - убить процесс.
is_runned - запущен ли процесс.
exit_code - код возврата завершённого процесса (не знаю, что возвращать, если процесс ещё не завершён).
Аналогичный функционал есть в Qt (представлен классом QProcess), python (модуль subprocess, в частности класс subprocess.Popen). В принципе, идея появилась на основе их. Не исключаю, что м.б. ещё что полезное у них найти или в других языках, имеющих схожий функционал.