Cygwin 无法运行c/c++;来自EclipseRCP的exe

Cygwin 无法运行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

我正在尝试从eclipse
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
在单击eclipse
RCP
按钮后执行。
但只要我点击按钮,
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