Showing posts with label Process. Show all posts
Showing posts with label Process. Show all posts

Executing Unix command through Java


In this tutorial we will see about executing Unix command through Java program and printing the output as same as Unix shell command printing. We can achieve by using Process class in Java. 

Process class provides the methods for performing 
standard input from the given process, 
performing standard output to the process, 
waiting for the process to complete its task, 
checking exit status of the process and 
destroying the process (normally its killing the process).

Constructor in Process class:
Process()

Method in Process class:
abstract InputStream getInputStream()
Used to get the standard input stream of sub-process.

abstract OutputStream getOutputStream()
Used to get the standard output stream of the sub-process.

abstract InputStream getErrorStream()
Used to get the standard error stream of the sub-process.

abstract void destroy()
Used to kill the sub-process.

abstract int exitValue()
Returns the exit value for the sub-process.

abstract int waitFor()
Makes current thread to wait, if necessary, until the process represented by this Process object has terminated.


Now lets see about how to execute Unix command using Process class in Java with simple example of listing folder and files from the current Folder. Second output will show you Error Stream result when we try to unzip a file.


import java.io.InputStream;

public class UnixCommandThroughJava {

 public static void main (String args[]) {
     
  String unixCommand = "ls -lh";
     InputStream in = null;
     
     try {
         StringBuilder commandResult = new StringBuilder();
         
         Process p = Runtime.getRuntime().exec(unixCommand, null);
         
         int returnVal = p.waitFor();
         
         if (returnVal == 0){ // no error           
             in = p.getInputStream();
         }else{     // If any error occurred 
             in = p.getErrorStream();
         }
         
         int readInt;
         while ((readInt = in.read()) != -1){
             commandResult.append((char)readInt);                
         }
         
         System.out.println("COMMAND : " + unixCommand + "\n\nOUTPUT : \n" + commandResult.toString());
          
         in.close();
     
     } catch (Exception e) {
         System.out.println("An exception occured while executing command " + unixCommand);
         e.printStackTrace();
     }
 }
}


OUTPUT:


Executing Unix command through Java


Executing Unix command through Java