同一程序的多个Java映像执行同一个C程序,每个都读取其标准输出

同一程序的多个Java映像执行同一个C程序,每个都读取其标准输出,java,c,interprocess,Java,C,Interprocess,Java程序A自身执行两次,3个映像中的每一个都使用不同的参数执行同一个C程序;C程序通过stdout(例如fprintf(stdout,…))将数据发送回Java对等方,后者使用getInputStream()为其打开读卡器 如果一个程序自己运行,这种方法效果很好,但是如果一个程序同时有3个副本,那么只有一个程序可以传递数据,而其余的程序则被冻结 我假设每个C程序都有自己的stdout副本。这不对吗 我只是想确保这个架构是正确的,因为它会告诉我要调试什么-每个A对其他Java客户端来说也是一个

Java程序A自身执行两次,3个映像中的每一个都使用不同的参数执行同一个C程序;C程序通过
stdout
(例如
fprintf(stdout,…)
)将数据发送回Java对等方,后者使用
getInputStream()
为其打开读卡器

如果一个程序自己运行,这种方法效果很好,但是如果一个程序同时有3个副本,那么只有一个程序可以传递数据,而其余的程序则被冻结

我假设每个C程序都有自己的
stdout
副本。这不对吗


我只是想确保这个架构是正确的,因为它会告诉我要调试什么-每个A对其他Java客户端来说也是一个套接字服务器。

我不清楚。一次有多少个JVM?你为什么说“两次”,然后提到3?最后,你为什么不试试你想要达到的结果呢?哦,你担心标准的输出/输入不支持多个程序同时共享信息吗?第一个JVM执行另外两个,所以有3个。我试过了,一个stdout提供了,而其他的没有。你为什么不直接写临时文件呢?是的,每个进程都有自己的stdin和stdout(和stderr),但是如果没有代码,很难说问题出在哪里。我不清楚。一次有多少个JVM?你为什么说“两次”,然后提到3?最后,你为什么不试试你想要达到的结果呢?哦,你担心标准的输出/输入不支持多个程序同时共享信息吗?第一个JVM执行另外两个,所以有3个。我试过了,一个stdout提供了,而其他的没有。为什么不直接写临时文件呢?是的,每个进程都有自己的stdin和stdout(和stderr),但是如果没有代码,很难判断问题出在哪里。