Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Java Language
Expertise: Beginner
Jan 18, 2000



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Calling a C Program

I've created a console C program that has parameters input on the command line and would like to create a Java application that selects the parameters and calls the C program from Java.

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

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

You can also define the values of environment variables with a string array. The exec() method will return a Process reference which can be used to interact with the executed command. You can wait for the process to finish with waitFor() or interact with any one of its standard input, output, or error with any one of getInputSteram(), getOutputStream, or getErrorStream(). The following example executes a Unix grep command and 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) {
DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date