Перехват stdout и stderr в С++

86
14 марта 2021, 23:30

У меня есть задание. Написать приложение на С++ , которое принимает на вход имя файла, который надо запустить это может быть cmd, bash, exe и т.д., и перехватить его out и err. После завершения работы, записать всё в текстовый файл. Оно должно работать на Windows и Linux.

Мой личный вариант написать вот так system("argv[1]>output.txt"), но не уверен, что это правильно будет. Мб есть еще варианты как это сделать?

Answer 1

Чтобы оба потока перекинуть нужно подправить :

system((std::string(argv[1])+" 1> output.txt 2>&1").c_str());

. Так например работает bash.

READ ALSO
Как передать в Lua как глобальную переменную класс через this в LuaBridge

Как передать в Lua как глобальную переменную класс через this в LuaBridge

Сначало я объявил в Lua мой класс и функцию из класса которая мне нужна, а как передать экземпляр класса в котором все это происходит я не знаю

101
Ошибка в коде: OpenCV(4.1.0) Error: Assertion failed ((unsigned)i0 < (unsigned)size.p[0])

Ошибка в коде: OpenCV(4.1.0) Error: Assertion failed ((unsigned)i0 < (unsigned)size.p[0])

Когда запускаю программу, Visual Studio показывает мне код из файла matinl

114
Как сделать такой блок (RoadMap)?

Как сделать такой блок (RoadMap)?

Подскажите пожалуйста как сделать такой блок? Если точнее, то именно первую часть задачи (линия с анимацией),не знаю как сделать изогнутые...

93