Package org.eclipse.cdt.utils.spawner
Class Spawner
- java.lang.Object
-
- java.lang.Process
-
- org.eclipse.cdt.utils.spawner.Spawner
-
public class Spawner extends Process
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
Spawner.IChannel
static class
Spawner.UnixChannel
static class
Spawner.WinChannel
-
Constructor Summary
Constructors Modifier Constructor Description protected
Spawner(String command)
Deprecated.Do not use this method it splits command line arguments on whitespace with no regard to quoting rules.protected
Spawner(String[] cmdarray)
Executes the specified command and arguments in a separate process.protected
Spawner(String[] cmdarray, String[] envp)
Executes the specified command and arguments in a separate process with the specified environment.protected
Spawner(String[] cmdarray, String[] envp, File dir)
Executes the specified command and arguments in a separate process with the specified environment and working directory.protected
Spawner(String[] cmdarray, String[] envp, File dir, PTY pty)
Spawner(String command, boolean bNoRedirect)
Deprecated.Do not use this method it splits command line arguments on whitespace with no regard to quoting rules.protected
Spawner(String cmd, String[] envp)
Deprecated.Do not use this method it splits command line arguments on whitespace with no regard to quoting rules.protected
Spawner(String command, String[] envp, File dir)
Deprecated.Do not use this method it splits command line arguments on whitespace with no regard to quoting rules.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
destroy()
See java.lang.Process#destroy (); Clients are responsible for explicitly closing any streams that they have requested through getErrorStream(), getInputStream() or getOutputStream()void
exec_detached(String[] cmdarray, String[] envp, String dirpath)
int
exec2(String[] cmdarray, String[] envp, String dir, Spawner.IChannel[] chan, String slaveName, int masterFD, boolean console)
Native method when executing with a terminal emulation.int
exitValue()
See java.lang.Process#exitValue ();protected void
finalize()
InputStream
getErrorStream()
See java.lang.Process#getErrorStream (); The client is responsible for closing the stream explicitly.InputStream
getInputStream()
See java.lang.Process#getInputStream (); The client is responsible for closing the stream explicitly.OutputStream
getOutputStream()
See java.lang.Process#getOutputStream (); The client is responsible for closing the stream explicitly.int
hangup()
int
interrupt()
On Windows, interrupt the spawned program by using Cygwin's utility 'kill -SIGINT' if it's a Cgywin program, otherwise send it a CTRL-C.int
interruptCTRLC()
On Windows, interrupt the spawned program by send it a CTRL-C (even if it's a Cygwin program).boolean
isRunning()
int
kill()
long
pid()
int
raise(int processID, int sig)
Native method to drop a signal on the process with pid.int
terminate()
int
waitFor()
See java.lang.Process#waitFor ();int
waitFor(int processID)
Native method to wait(3) for process to terminate.-
Methods inherited from class java.lang.Process
children, descendants, destroyForcibly, info, isAlive, onExit, supportsNormalTermination, toHandle, waitFor
-
-
-
-
Field Detail
-
NOOP
public int NOOP
-
HUP
public int HUP
-
KILL
public int KILL
-
TERM
public int TERM
-
INT
public int INT
On Windows, what this does is far from easy to explain. Some of the logic is in the JNI code, some in the spawner.exe code.- If the process this is being raised against was launched by us (the Spawner)
- If the process is a cygwin program (has the cygwin1.dll loaded), then issue a 'kill -SIGINT'. If the 'kill' utility isn't available, send the process a CTRL-C
- If the process is not a cygwin program, send the process a CTRL-C
- If the process this is being raised against was not launched by us, use DebugBreakProcess to interrupt it (sending a CTRL-C is easy only if we share a console with the target process)
- If the process this is being raised against was launched by us (the Spawner)
-
CTRLC
public int CTRLC
A fabricated signal number for use on Windows only. Tells the starter program to send a CTRL-C regardless of whether the process is a Cygwin one or not.- Since:
- 5.2
-
-
Constructor Detail
-
Spawner
@Deprecated public Spawner(String command, boolean bNoRedirect) throws IOException
Deprecated.Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677- Throws:
IOException
-
Spawner
protected Spawner(String[] cmdarray, String[] envp, File dir) throws IOException
Executes the specified command and arguments in a separate process with the specified environment and working directory.- Throws:
IOException
-
Spawner
protected Spawner(String[] cmdarray, String[] envp, File dir, PTY pty) throws IOException
- Throws:
IOException
-
Spawner
@Deprecated protected Spawner(String command) throws IOException
Deprecated.Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677Executes the specified string command in a separate process.- Throws:
IOException
-
Spawner
protected Spawner(String[] cmdarray) throws IOException
Executes the specified command and arguments in a separate process.- Throws:
IOException
-
Spawner
protected Spawner(String[] cmdarray, String[] envp) throws IOException
Executes the specified command and arguments in a separate process with the specified environment.- Throws:
IOException
-
Spawner
@Deprecated protected Spawner(String cmd, String[] envp) throws IOException
Deprecated.Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677Executes the specified string command in a separate process with the specified environment.- Throws:
IOException
-
Spawner
@Deprecated protected Spawner(String command, String[] envp, File dir) throws IOException
Deprecated.Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677Executes the specified string command in a separate process with the specified environment and working directory.- Throws:
IOException
-
-
Method Detail
-
finalize
protected void finalize() throws Throwable
-
getInputStream
public InputStream getInputStream()
See java.lang.Process#getInputStream (); The client is responsible for closing the stream explicitly.- Specified by:
getInputStream
in classProcess
-
getOutputStream
public OutputStream getOutputStream()
See java.lang.Process#getOutputStream (); The client is responsible for closing the stream explicitly.- Specified by:
getOutputStream
in classProcess
-
getErrorStream
public InputStream getErrorStream()
See java.lang.Process#getErrorStream (); The client is responsible for closing the stream explicitly.- Specified by:
getErrorStream
in classProcess
-
waitFor
public int waitFor() throws InterruptedException
See java.lang.Process#waitFor ();- Specified by:
waitFor
in classProcess
- Throws:
InterruptedException
-
exitValue
public int exitValue()
See java.lang.Process#exitValue ();
-
destroy
public void destroy()
See java.lang.Process#destroy (); Clients are responsible for explicitly closing any streams that they have requested through getErrorStream(), getInputStream() or getOutputStream()
-
interrupt
public int interrupt()
On Windows, interrupt the spawned program by using Cygwin's utility 'kill -SIGINT' if it's a Cgywin program, otherwise send it a CTRL-C. If Cygwin's 'kill' command is not available, send a CTRL-C. On linux, interrupt it by raising a SIGINT.
-
interruptCTRLC
public int interruptCTRLC()
On Windows, interrupt the spawned program by send it a CTRL-C (even if it's a Cygwin program). On linux, interrupt it by raising a SIGINT.- Since:
- 5.2
-
hangup
public int hangup()
-
kill
public int kill()
-
terminate
public int terminate()
-
isRunning
public boolean isRunning()
-
exec_detached
public void exec_detached(String[] cmdarray, String[] envp, String dirpath) throws IOException
- Throws:
IOException
-
exec2
public int exec2(String[] cmdarray, String[] envp, String dir, Spawner.IChannel[] chan, String slaveName, int masterFD, boolean console) throws IOException
Native method when executing with a terminal emulation.- Throws:
IOException
- Restriction:
- This method is not intended to be referenced by clients.
-
raise
public int raise(int processID, int sig)
Native method to drop a signal on the process with pid.
-
waitFor
public int waitFor(int processID)
Native method to wait(3) for process to terminate.- Restriction:
- This method is not intended to be referenced by clients.
-
-