-2

Java で書かれた独自のエディタを作成している場合、C プログラミング言語で書かれたプログラムを実行することは可能ですか? はいの場合、どのように?

4

2 に答える 2

0

これを試して:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class C_Compile {
public static void main(String args[]){

    String ret = compile();
    System.out.println(ret);

}
    public static String compile()
    {
        String log="";
        String myDirectory = "C:\\";
         try {
             String s= null;
           //change this string to your compilers location,Assume C file is in c:\\Hello.c
             Process p = Runtime.getRuntime().exec("cmd /C gcc Hello.c", null, new java.io.File(myDirectory));

         BufferedReader stdError = new BufferedReader(new 
              InputStreamReader(p.getErrorStream()));
         boolean error=false;

         log+="";
         while ((s = stdError.readLine()) != null) {
             log+=s;
             error=true;
             log+="\n";

         }
         if(error==false) log+="Compilation Successful !!!";

     } catch (IOException e) {
         e.printStackTrace();
     }
         return log;
    }


  public int runProgram() 
    {
        int ret = -1;
       try
         {            
             Runtime rt = Runtime.getRuntime();
             Process proc = rt.exec("cmd.exe /c start a.exe");
             proc.waitFor();
             ret = proc.exitValue();
         } catch (Throwable t)
           {
             t.printStackTrace();
             return ret;
           }
       return ret;                      
    }}
于 2013-09-13T07:53:15.657 に答える
0

exec ファミリを使用してプロセスを実行できます。これを行うために使用するスニペットを次に示します。プロセスの出力を読んで、それが何をしたかがわかります。gcc からのエラー メッセージを解析するために IDE でこれが必要になる場合があります。

        Process proc = Runtime.getRuntime().exec("mycommand");
        BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));
        String line;
        while ((line = input.readLine()) != null)
        {
            // Here you can parse the output of the process.
            System.out.println(line);
        }
于 2013-09-13T07:53:45.350 に答える