В 2 частях кода C ++ / CLI, над которым я работаю, программе нужно запустить другой исполняемый файл и перенаправить вывод STDOUT в файл. Его пытались двумя разными способами, и только один из двух в настоящее время работает. Программа работает на Windows XP.
Первый раздел собирает длинный символ *, который выглядит примерно так:
char* exepath = "start/B /D\\root\\bin \\root\\bin\\process.exe 1>\\root\\logs\\process_STDOUT.txt"
Тогда код просто вызывает
Status = system(exepath);
Это работает нормально: он запускает process.exe и создает файл process_STDOUT.txt, как и ожидалось.
Второй раздел пытается сделать то же самое, используя объект ProcessStartInfo. Он успешно запускает process.exe, но не создает перенаправленный выходной файл .txt. Вот упрощенная версия этого кода:
Process p = gcnew Process();
ProcessStartInfo^ s = gcnew ProcessStartInfo();
s->FileName = "\\root\\bin\\process.exe";
s->WindowStyle = ProcessWindowStyle::Hidden;
s->CreateNoWindow = true;
s->UseShellExecute = false;
s->Arguments = "1>\\root\\logs\\process_STDOUT.txt";
p->StartInfo = s;
p->Start();
Что-то не так с этим кодом? И если нет, то возвращение к простому вызову системы (exepath) - мой единственный вариант или есть другие?