Cygwin 无法运行c/c++;来自EclipseRCP的exe
我正在尝试从eclipseCygwin 无法运行c/c++;来自EclipseRCP的exe,cygwin,eclipse-rcp,eclipse-cdt,Cygwin,Eclipse Rcp,Eclipse Cdt,我正在尝试从eclipseRCP(JavaAPI)运行我的c/c++.exe 代码: 而RecordingThread.java的代码是: package com.jkt.rcp.texteditor.handlers; import java.io.IOException; public class RecordingThread extends Thread { private String file = "C:\\workspace\\JProAcceptanceBot\\R
RCP
(JavaAPI)运行我的c/c++.exe
代码:
而RecordingThread.java
的代码是:
package com.jkt.rcp.texteditor.handlers;
import java.io.IOException;
public class RecordingThread extends Thread {
private String file = "C:\\workspace\\JProAcceptanceBot\\Record.exe";
public void run() {
System.out.println("inside Run()...");
try {
Process proc = Runtime.getRuntime().exec(file);
} catch (IOException e) {
System.out.println("IOException:"+e);
e.printStackTrace();
}
}
}
实际上,RecordHandler.java
在单击eclipseRCP
按钮后执行。但只要我点击按钮,
c/c++exe
就没有响应,我的Java程序也停止响应。否则,如果我在eclipse中运行这个
exe
,它会正常运行
这个c/c++exe
是使用EclipseCDT和Cygwin制作的
请查看代码并建议?注意(也在和中介绍):
在Windows平台Runtime.exec(字符串[]cmdarray)上,如果其中一个命令行参数包含双引号(“),则无法正确传递命令行参数
所以我的问题是:您试图执行的确切命令行是什么?请注意(也在和中介绍):
在Windows平台Runtime.exec(字符串[]cmdarray)上,如果其中一个命令行参数包含双引号(“),则无法正确传递命令行参数
所以我的问题是:您试图执行的确切命令行是什么?我不确定,但您可能希望立即开始读取通过proc.GetInputStream()获得的
proc
的输入流:
其所有标准io(即标准输入法),
stdout、stderr)操作将
已重定向到父进程
三流
(Process.getOutputStream(),
Process.getInputStream(),
Process.getErrorStream())。父母
该过程使用这些流来馈送
输入到并从中获取输出
子流程<因为一些本地人
平台只提供有限的缓冲区
标准输入和输出的大小
流,未能及时写入
输入流或读取输出流
子流程的错误可能导致
要阻止的子进程,甚至
死锁。
描述相同的问题并解释解决方案(第3页)。我不确定,但您可能希望立即开始读取通过proc.GetInputStream()获得的
proc
的inputstream:
其所有标准io(即标准输入法),
stdout、stderr)操作将
已重定向到父进程
三流
(Process.getOutputStream(),
Process.getInputStream(),
Process.getErrorStream())。父母
该过程使用这些流来馈送
输入到并从中获取输出
子流程<因为一些本地人
平台只提供有限的缓冲区
标准输入和输出的大小
流,未能及时写入
输入流或读取输出流
子流程的错误可能导致
要阻止的子进程,甚至
死锁。
描述了相同的问题并解释了解决方案(第3页)。我尝试了这些东西,但没有成功。实际上,我使用我的本机代码生成了一个文本文件,并将一些材料写入该文本文件。无论.exe执行什么操作,此问题都会存在。您是否在调试器中查看了proc.GetInputStream()的输出?Thanx jilles。问题已通过您的建议得到解决。实际上,我对proc.GetInputStream()做了一些错误处理。现在,我的c/c++exe在RCP中运行良好。很高兴听到有帮助的消息!也许有足够的理由接受我的答案?(单击答案左侧的复选标记,刚好在分数下方)我尝试了这些东西,但没有成功。实际上,我使用我的本机代码生成了一个文本文件,并将一些材料写入该文本文件。无论.exe执行什么操作,此问题都会存在。您是否在调试器中查看了proc.GetInputStream()的输出?Thanx jilles。问题已通过您的建议得到解决。实际上,我对proc.GetInputStream()做了一些错误处理。现在,我的c/c++exe在RCP中运行良好。很高兴听到有帮助的消息!也许有足够的理由接受我的答案?(点击我答案左边的复选标记,就在分数下面)
package com.jkt.rcp.texteditor.handlers;
import java.io.IOException;
public class RecordingThread extends Thread {
private String file = "C:\\workspace\\JProAcceptanceBot\\Record.exe";
public void run() {
System.out.println("inside Run()...");
try {
Process proc = Runtime.getRuntime().exec(file);
} catch (IOException e) {
System.out.println("IOException:"+e);
e.printStackTrace();
}
}
}
Passing/Expected --> Actual
{ "ab\"c", "d\"ef" } --> { "abc def" }
{ "a b \" c", "d \" e f" } --> { "a b ", "c d", "e f " }
{ "a", "", "b" } --> { "a", "b" }
{ "\" a" } --> java.lang.IllegalArgumentException