devxlogo

Calling a C Program

Calling a C Program

Question:
I’ve created a console C program that has parameters input on thecommand line and would like to create a Java application that selectsthe parameters and calls the C program from Java.

Answer:
The Runtime class allows you to execute system commands from a Javaprogram. Just fetch the application Runtime with Runtime.getRuntime()and then call the appropriate exec() method.

There are fourvariations of the exec() method. You can either pass a command as asingle string that will be parsed by the exec() method into commandand arguments, or you can explicitly define which strings are part ofthe command and which are arguments in a string array.

You can alsodefine the values of environment variables with a string array. Theexec() method will return a Process reference which can be used tointeract with the executed command. You can wait for the process tofinish with waitFor() or interact with any one of its standard input,output, or error with any one of getInputSteram(), getOutputStream, orgetErrorStream(). The following example executes a Unix grep commandand copies its output to standard output.

import java.io.*;public class ExecExample {  public static void main(String[] args) {    Process process;    Runtime runtime;    String[] command = { "/bin/grep", "ExecExample", "ExecExample.java" };    InputStream input;    int bytes;    byte[] buffer;    runtime = Runtime.getRuntime();    try {      process = runtime.exec(command);      // Copy process output to our standard output      buffer = new byte[1024];      input = process.getInputStream();      while((bytes = input.read(buffer)) > 0)	System.out.write(buffer, 0, bytes);    } catch(IOException e) {      e.printStackTrace();      return;    }  }}

devx-admin

Share the Post: