Process p = Runtime.getRuntime().exec(command);
is = p.getInputStream();
byte[] userbytes = new byte[1024];
is.read(userbytes);
I want to execute a shell command in linux os from java . But pmd reports says don't use java Runtime.exec(). Why? What is the reason ? Is there any alternative for Runtime.exec()?
In Java, the Runtime class is used to interact with Every Java application that has a single instance of class Runtime that allows the application to interface with the environment in which the application is running. The current runtime can be obtained from the getRuntime () method.
The current runtime can be obtained from the getRuntime method. Methods of Java Runtime class : 1) public static Runtime getRuntime () : This method returns the instance or Runtime object associated with the current Java application.
Runtime.getRuntime ().halt () The Runtime class allows an application to interact with the environment in which the application is running. It has a halt method that can be used to forcibly terminate the running JVM. Unlike the exit method, this method does not trigger the JVM shutdown sequence.
As we've seen earlier, the System.exit () method triggers the shutdown sequence of JVM, whereas the Runtime.getRuntime ().halt () terminates the JVM abruptly. We can also do this by using operating system commands.
Unless you're stuck on an ancient JVM, java.lang.ProcessBuilder
makes it much easier to specify a process, set up its environment, spawn it, and handle its file descriptors.
This class is used to create operating system processes.
Each
ProcessBuilder
instance manages a collection of process attributes. Thestart()
method creates a newProcess
instance with those attributes. Thestart()
method can be invoked repeatedly from the same instance to create new subprocesses with identical or related attributes....
Starting a new process which uses the default working directory and environment is easy:
Process p = new ProcessBuilder("myCommand", "myArg").start();
Here is an example that starts a process with a modified working directory and environment:
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); Map<String, String> env = pb.environment(); env.put("VAR1", "myValue"); env.remove("OTHERVAR"); env.put("VAR2", env.get("VAR1") + "suffix"); pb.directory(new File("myDir")); Process p = pb.start();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With