C++流输入过程

标签 c++ stream pipe

我想将一个程序的文本输出转换为 Gui 输出,并且第一个程序每微秒产生一次行输出。如果我在 linux 中使用管道命令发送,第二个程序如何逐行接收并处理它?换句话说,我在 C++ 中有主要功能,该参数是流式且不受限制。 谢谢

最佳答案

程序 1:

#include <iostream>
int main()
{
    std::cout << "Program1 says Hello world!" << std::endl; // output to standard out using std::cout
}

程序 2:

#include <iostream>
#include <string>
int main()
{
    std::string line;
    while (std::getline(std::cin, line)) // Read from standard in line by line using std::cin and std::getline
    {
         std::cout << "Line received! Contents: " << line << std::endl;
    }
}

现在,如果您运行 Program1 并通过管道传输到 Program2,您应该得到:

$ ./Program1 | ./Program2
Line Recieved! Contents: Program1 says Hello world!

请注意,Program2 将继续从标准输入读取数据,直到达到 EOF(或发生某些错误)。

对于您的情况,Program1 是生成输出的东西,Program2 是使用输出的 GUI 程序。请注意,为了使程序成为非阻塞的,您可能希望在单独的线程上从标准输入读取数据。

至于“每微秒接收一次输入”的约束可能不现实......它会尽可能快地处理,但你不能依赖标准输入/输出那么快,特别是如果你'发送大量数据。

关于C++流输入过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779462/

相关文章:

c++ - 能够在 lambda 中使用非捕获局部变量的编译时特性有什么意义?

C++ 在 if 语句设置条件为真和 or-ing 循环条件之间的行为差​​异

linux - 终端中命令输出的说明

node.js - "readable"事件发生两次

javascript - 如何使多个用户可以访问 iframe?

Python 语言对管道的支持

c# - 需要帮助设计进程间通信层

c++ - 链接公共(public)变量和私有(private)变量(具有对私有(private)变量的写访问权限)

C++ 使用数组结构创建平衡二叉搜索树

c - 为什么这个 fgets() 循环永远不会结束?