我正在寻找一种方法来获取从C++程序中运行命令的输出.我已经看过使用system()函数,但这只会执行一个命令.这是我正在寻找的一个例子:
std::string result = system("./some_command");
Run Code Online (Sandbox Code Playgroud)
我需要运行一个任意命令并获取其输出.我看过Boost.org,但我找不到任何可以满足我需要的东西.
即使我构建一个新的C++项目并尝试构建一个发布文件,我也经常遇到这个问题.
我使用Visual Studio 2008.可能导致此问题的一件事是我的代码保存在服务器磁盘上,而不是本地硬盘上.
mt.exe:一般错误c101008d:无法将更新后的清单写入文件"..\Release\PGTS_version17C.exe"的资源.该进程无法访问该文件,因为该文件正由另一个进程使用.
有谁知道如何解决这个问题?谢谢.
使用C++如何使用stdin stdout和stderr启动exe /进程?我知道如何在.NET中执行此操作并且我记得在过去使用popen但是popen似乎允许stdin或stdout不是两者而不是全部3.
我需要这个用于Windows,但欢迎使用linux解决方案,因为我将来需要它用于同一个项目.
在我的 C++/WinAPI 代码中,我想运行一些命令并捕获它们的输出。为了测试非 ASCII 输出,我将网络连接重命名为Eth\xc3\xa9rn\xc3\xa9t \xd7\x90\xd7\x91\xd7\x92 \xd0\x91\xd0\xb1\xd0\x93\xd0\xb3\xd0\x94\xd0\xb4并运行ipconfig. 在命令提示符下运行时,输出正确(使用 Courier New 等支持字体时可见):
C:\\>ipconfig\nWindows IP Configuration\n\nEthernet adapter Eth\xc3\xa9rn\xc3\xa9t \xd7\x90\xd7\x91\xd7\x92 \xd0\x91\xd0\xb1\xd0\x93\xd0\xb3\xd0\x94\xd0\xb4:\n(...)\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试按照此答案中的示例将输出重定向到管道。但返回的字节数组ReadFile()不是 unicode - 它是用 CP_OEMCP 编码的(在我的例子中是 CP437),因此希伯来语和俄语字符显示为“?”。由于字符已经丢失,任何进一步的处理都无法恢复它们。
显然这是可能的,因为控制台窗口中的 cmd 可以做到这一点。我该怎么做?
\n