c++如何使用新的标准输入和标准输出启动进程

标签 c++ openframeworks

我正在 openFrameworks 中编写程序,这是一个 C++ 框架。我想启动另一个应用程序并通过标准输入和标准输出与其通信。我可以使用 ofThread 类方便地启动一个新线程。我曾计划创建两个管道并将 std 进出线程重定向到管道(使用 dup2),但不幸的是,这会重定向整个应用程序的管道,而不仅仅是线程。

有没有一种方法可以启动另一个应用程序并能够读取其输出并为其提供输入?

最佳答案

您需要使用 fork() 创建子进程而不是另一个线程函数(本质上可能涉及另一个线程)。

不同之处在于,fork 创建了父进程环境的完整拷贝,应该在子进程范围内的 exec() 调用中显示,而只是 exec() 来自线程的尝试共享来自其父进程(线程)的所有资源,因此可能导致意外的并发(竞争条件)问题。

关于c++如何使用新的标准输入和标准输出启动进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26644328/

相关文章:

java - 如何将多个变量从 java Activity 传递到 java 类?

c++ 客户端代理头文件不是由 gSoap 中的 soapcpp2.exe 生成的

c++ - 尝试将 ofstream 传递给对象时出错 (C++)

c++ - 在 C++ 中将 int 设置为 Infinity

c++ - 我们可以重新定义正则表达式吗?

c++ - 获取 glFrustum 的坐标

c++ - 使用 C++ 和 openframeworks 的 Color 图像检索系统

c++ - 什么时候需要无锁数据结构来跨线程读取/写入音频应用程序中的数据?

c++ - 从 std::ranges 算法中获取投影值

c++ - 在主循环中删除元素并将其添加到 vector 中