编写在Windows下的Java应用程序中生成的C ++控制台应用程序

编写在Windows下的Java应用程序中生成的C ++控制台应用程序,第1张

概述编写在Windows下的Java应用程序生成的C ++控制台应用程序

在windows下,如何将string数据从Java发送到C ++控制台应用程序? 我正在尝试这样做:

BuffereDWriter bw = new BuffereDWriter(new OutputStreamWriter(proc.getoutputStream())); String o = ...; proc.getoutputStream().write(o.getBytes());

但是当我这样做时,我从来没有在C ++端看到它:

Readfile(stdin_h,buf,sizeof(buf),&bytes,0)

Readfile永远不会返回。

接下来是进一步的阐述和示例代码。

无法redirect程序的控制台输出

用于windows的命令行对话框工具

控制台替代kcachegrind?

使用转义序列时错误的符号学习python困难的方式ex10

我怎样才能从我的Perl程序中设置cmd.exe窗口的大小?

我写了一个简单的C ++控制台(Win32)应用程序,它从STDIN中读取并执行基于input的 *** 作。

现在我想编写一个Java应用程序来“驱动”C ++应用程序。 Java应用程序应该:

使用Runtime.exec()启动C ++应用程序

将string数据写入C ++应用程序的STDIN

重复,直到时间到了。

我的Java应用程序似乎正在工作,但C ++应用程序永远不会收到STDIN上的任何数据。

这里是C ++应用程序:

int main() { ofstream f("c:\temp\Hacks.txt"); HANDLE stdin_h = GetStdHandle(STD_input_HANDLE); DWORD file_type = GetfileType(stdin_h); if( file_type != file_TYPE_CHAR ) return 42; f << "Pipe" << endl; for( bool cont = true; cont; ) { char buf[64*1024] = {}; DWORD bytes = 0; if( Readfile(stdin_h,0) ) { string in(buf,bytes); cout << "Got " << in.length() << " bytes: '" << in << "'" << endl; f << "Got " << in.length() << " bytes: '" << in << "'" << endl; if( in.find('Q') ) cont = false; } else { cout << "Err " << GetLastError() << " while reading file" << endl; f << "Err " << GetLastError() << " while reading file" << endl; } } }

这里是Java方面:

public static voID main(String[] args) { Runtime rt =Runtime.getRuntime(); try { Process proc = rt.exec("c:\dev\Hacks\x64\deBUG\Hacks.exe"); BuffereDWriter bw = new BuffereDWriter(new OutputStreamWriter(proc.getoutputStream())); int a = 0; while(a < 5) { String o = (a == 4 ? "Qn" : "An"); proc.getoutputStream().write(o.getBytes()); System.out.println("Wrote '" + o + "'"); ++a; } try { proc.waitFor(); // Todo code application logic here } catch (InterruptedException ex) { Logger.getLogger(Java_Hacks.class.getname()).log(Level.SEVERE,null,ex); } } catch (IOException ex) { Logger.getLogger(Java_Hacks.class.getname()).log(Level.SEVERE,ex); } }

Java方面似乎工作正常,但我从来没有收到在C + +端的string。

我在这里做错了什么? 在windows下,如何将string数据从Java发送到C ++控制台应用程序?

用于构buildmultimodule maven项目的windows脚本

如何在C中使用printf来强调文本

c ++控制台的屏幕大小

在windows上,控制台窗口所有权如何工作?

回去在linux控制台中的一条线?

为什么在编写5个字符串之后,不会在Java端刷新输出流?

proc.getoutputStream().flush();

总结

以上是内存溢出为你收集整理的编写在Windows下的Java应用程序中生成的C ++控制台应用程序全部内容,希望文章能够帮你解决编写在Windows下的Java应用程序中生成的C ++控制台应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1241280.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存