问题标签 [posix-select]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
846 浏览

c++ - 如何将数据写入标准输入以供等待标准输入输入的单独线程使用?

我正在尝试在与主线程不同的线程中从标准输入读取一些数据。主线程应该能够通过写入标准输入与这个等待线程进行通信,但是当我运行测试代码(包括在下面)时,除了消息(我的测试代码中的'do_some_work')直接打印在终端上而不是从等待线程输出。

我尝试了 SO 上列出的几个解决方案,但没有成功。我的代码模仿了以下 SO question 的解决方案之一,它本身工作得很好,但是当与我的 read_stdin_thread 结合使用时,它就不行了。

是否可以在 Linux 中将数据写入自己的标准输入

说明如何写入 stdin 的代码片段将由 threadReadStdin 读取,这将非常有帮助。

提前非常感谢!

编辑:

我在这里忘记提到的一件事是 readStdin() 中的代码是第三方代码,并且发生的任何类型的通信都必须符合其条款。

此外,我很容易将 std::cin 和 std::cout 重定向到 fstream 或 stringstream。问题是,当我写入重定向的 cin 缓冲区时,读取线程上并没有真正出现。

编辑2:

这是一个单进程应用程序,不能选择生成。