我有一个C++控制台应用程序,它会返回一些东西,然后,我需要在浏览器中显示。因此,我尝试将C++中的每个console.write
都写入一个.txt
文件,以供将来读取PHP,但没有成功,因为它没有写入错误!
然后我尝试在PHP中使用exec('program.exe', $output);
,但也没有成功。:/
- 还有别的办法吗
- 或者C++中的任何函数都会将控制台中显示的每一件事写入
.txt
- 或者另一种编程语言中的某个函数可以捕获控制台中的所有内容
您必须了解cout(标准输出)和cerr是两个不同的流,所以您可能也忘记了将cerr重定向到您的文本文件。这里有一些你可以使用的想法:
- 将流重定向到代码上的文件(请参阅如何将cin和cout重定向到文件?)
- 通过以下方式调用
executable.exe > out.txt 2>&1
,从命令行重定向任何控制台程序的输出(您不需要更改代码,并且可以在windows和unix/linux上工作)(请参阅将所有输出重定向到文件) - 使用TCP套接字将web应用程序连接到控制台应用程序(这可能是一种开销,但如果应用程序需要某种交互式控制,则会很有用)
有三个标准文件句柄,称为stdin、stdout和stderr。看起来您现在只获取stdout。尝试将stderr重定向到stdout。
exec('program.exe 2>&1', $output);
(不仅适用于*nix,也适用于win32)。
另请参阅:在外壳中;2>amp;1〃;意思是