在我正在處理的C++/CLI代碼的2部分中,程序需要運行不同的可執行文件,並將其STDOUT輸出重定向到文件。其嘗試有兩種不同的方式,目前只有其中的一種可行。該程序正在Windows XP上運行。有沒有更好的方式來重定向標準輸出在C++/CLI然後用系統()?
第一部分組裝很長的char *是最終看起來是這樣的:
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)我唯一的選擇還是有其他的?