gpt4 book ai didi

c++ - 从 C/C++ 编码的应用程序读取输出流

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:06 24 4
gpt4 key购买 nike

首先,我在 Ubuntu 14.04 上

所以,这是我的问题:我正在处理具有图形界面(游戏/音乐播放器/等)的 C++ 编码应用程序。只要有事情发生,这个应用程序就会不断地向记录器发送字符串,但这些字符串只在客户端可见。

我已经尝试过的事情(失败):

  • 跟踪应用程序并过滤结果(假设应用程序显示消息“Hello, user”,我会将所有输出记录到测试文件并搜索“Hello”)

  • ltrace 应用程序

  • 使用 dbg 调试应用程序

  • 在 C/C++ 应用程序上搜索调试方法

我从最后一种方法中得到的是,程序通常通过 clog 流记录错误和消息。我可以做些什么来检索该信息?

继续,我有一个图形化的 C/C++ 编码应用程序,它在客户端的窗口中不断输入字符串;我想读取这些字符串或该应用程序执行的任何其他字符串/输入。任何调试/内存读取信息也可能有帮助!

谢谢

最佳答案

  1. std::cout对应stdout流;
    std::cerrstd::clog 对应于 stderr 流。

  2. 默认情况下,“发送”到 stdoutstderr 的内容显示在终端中。
    要查看它,只需打开终端仿真器(或者,终端),键入程序所在的路径并使用 Enter 确认。您将看到发送到 stdoutstderr 的内容。

  3. stdout 由数字 1 表示,stderr2.

  4. 下一个提示是为在 bash shell 中工作而设计的。 (他们可能会在另一个 shell 上工作,但他们不必这样做)。如果您不确定您使用的是 bash,请在终端中键入 bash 并使用 Enter 确认。

  5. 当你想将流的内容发送到文件时,在路径之后(但在回车之前)写入空格和n>filename,其中n是文件的数量您想要重定向的流(跳过时,1=stdout 将被重定向)。默认情况下,您不会在终端中看到重定向的内容。

  6. 当您只想完全忽略流的内容时,将流重定向到 /dev/null

  7. 当你想发送 stdout 到另一个程序(如果第二个程序是控制台程序,它会看到它就像用户使用键盘输入一样),之后路径(但在按 Enter 之前)键入 |program_name and_possible_parameters。例如,您可以将 stdout 重定向到 grep

    grep 将只写入包含作为参数传递的字符串的行(在 grep 之后,键入空格和字符串,如果它包含空格,则使用 ""分隔参数'',如果它包含 ' "\ 在其前面加上反斜杠 (\). 如果它的结果​​要出现在终端,我建议在 grep 和参数之间写 --color=auto 来告诉 grep 使用不同的颜色写入每次出现的参数。最后,你的命令看起来像
    path_to_your_program |grep --color=auto "argument"

  8. 您可以在一条命令中使用多个重定向。
    重定向是从左到右处理的。

  9. 当你想将 stderr 重定向到另一个程序的输入时,你可以将它的内容重定向到 stdout通过键入 2>&1 然后使用 |

关于c++ - 从 C/C++ 编码的应用程序读取输出流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25346175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com