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;    }  }}
See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist