start(): This method is available in the java.lang.ProcessBuilder class of Java.
Syntax:
Process java.lang.ProcessBuilder.start() throws IOException
This method starts a new process using the attributes of this process builder.
The new process will invoke the command and arguments given by command(),in a working directory as given by directory(),with a process environment as given by environment().
Parameters: NA
Returns: a new Process object for managing the subprocess.
Throws:
1. NullPointerException - if an element of the command list is null.
2. IndexOutOfBoundsException - if the command is an empty list.
3. SecurityException - if a security manager exists and
a). its checkExecmethod doesn't allow creation of the subprocess.
b). the standard input to the subprocess was redirected from a file and the security manager's checkRead method denies read access to the file.
c). the standard output or standard error of thesubprocess was redirected to a fileand the security manager's checkWrite method denies write access to the file.
4. UnsupportedOperationException - If the operating system does not support the creation of processes.
5. IOException - if an I/O error occurs.
Approach 1: When no exception
Java
package com.ProcessBuilder;import java.io.IOException;public class ProcessBuilderstart {public static void main(String[] args) throws IOException {String commands[] = { "notepad.exe" };ProcessBuilder processBuilder =new ProcessBuilder(commands);System.out.println(processBuilder.start());}}
Output:
Process[pid=5704, exitValue="not exited"]
Approach 2: NullPointerException
Java
package com.ProcessBuilder;import java.io.IOException;public class ProcessBuilderstart {public static void main(String[] args) throws IOException {String commands[] = null;ProcessBuilder processBuilder =new ProcessBuilder(commands);System.out.println(processBuilder.start());}}
Output:
Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "command" is null at java.base/java.lang.ProcessBuilder.<init>(ProcessBuilder.java:229) at com.ProcessBuilder.ProcessBuilderstart.main(ProcessBuilderstart.java:9)
Approach 3: IndexOutOfBoundsException
Java
package com.ProcessBuilder;import java.io.IOException;public class ProcessBuilderstart {public static void main(String[] args) throws IOException {String commands[] = {};ProcessBuilder processBuilder =new ProcessBuilder(commands);System.out.println(processBuilder.start());}}
Output:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1094) at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073) at com.ProcessBuilder.ProcessBuilderstart.main(ProcessBuilderstart.java:11)
Approach 4: IOException
Java
package com.ProcessBuilder;import java.io.IOException;public class ProcessBuilderstart {public static void main(String[] args) throws IOException {String commands[] = { "hello.exe" };ProcessBuilder processBuilder =new ProcessBuilder(commands);System.out.println(processBuilder.start());}}
Output:
Exception in thread "main" java.io.IOException: Cannot run program "hello.exe": CreateProcess error=2, The system cannot find the file specified at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1142) at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073) at com.ProcessBuilder.ProcessBuilderstart.main(ProcessBuilderstart.java:11) Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified at java.base/java.lang.ProcessImpl.create(Native Method) at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:483) at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:158) at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1109) ... 2 more
Some methods of ProcessBuilder class
ProcessBuilder.ProcessBuilder(String...): This method constructs a process builder with the specified operating system program and arguments.
ProcessBuilder.ProcessBuilder(List<String>): This method constructs a process builder with the specified operating system program and arguments.
command(): This method returns this process builder's operating system program and arguments.
command(List<String>): This method sets this process builder's operating system program and arguments.
command(String...): This method sets this process builder's operating system program and arguments.
directory(): This method returns this process builder's working directory.
directory(File): This method sets this process builder's working directory.
environment(): This method returns a string map view of this process builder's environment.
inheritIO(): This method sets the source and destination for subprocess standard I/O to be the same as those of the current Java process.
redirectError(): This method returns this process builder's standard error destination.
redirectError(File): This method sets this process builder's standard error destination to a file.
redirectError(Redirect): This method sets this process builder's standard error destination.
redirectErrorStream(): This method tells whether this process builder merges standard error and standard output.
redirectErrorStream(boolean): This method sets this process builder's redirectErrorStream property.
redirectInput(): This method returns this process builder's standard input source.
redirectInput(File): This method sets this process builder's standard input source to a file.
redirectInput(Redirect): This method sets this process builder's standard input source.
redirectOutput(): This method returns this process builder's standard output destination.
redirectOutput(File): This method sets this process builder's standard output destination to a file.
redirectOutput(Redirect): This method sets this process builder's standard output destination.
start(): This method starts a new process using the attributes of this process builder.
ProcessBuilder.startPipeline(List<ProcessBuilder>): his method starts a Process for each ProcessBuilder, creating a pipeline of processes linked by their standard output and standard input streams.
No comments:
Post a Comment