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 interfaceSpawner.IChannelstatic classSpawner.UnixChannelstatic classSpawner.WinChannel
-
Constructor Summary
Constructors Modifier Constructor Description protectedSpawner(String command)Deprecated.Do not use this method it splits command line arguments on whitespace with no regard to quoting rules.protectedSpawner(String[] cmdarray)Executes the specified command and arguments in a separate process.protectedSpawner(String[] cmdarray, String[] envp)Executes the specified command and arguments in a separate process with the specified environment.protectedSpawner(String[] cmdarray, String[] envp, File dir)Executes the specified command and arguments in a separate process with the specified environment and working directory.protectedSpawner(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.protectedSpawner(String cmd, String[] envp)Deprecated.Do not use this method it splits command line arguments on whitespace with no regard to quoting rules.protectedSpawner(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 voiddestroy()See java.lang.Process#destroy (); Clients are responsible for explicitly closing any streams that they have requested through getErrorStream(), getInputStream() or getOutputStream()voidexec_detached(String[] cmdarray, String[] envp, String dirpath)intexec2(String[] cmdarray, String[] envp, String dir, Spawner.IChannel[] chan, String slaveName, int masterFD, boolean console)Native method when executing with a terminal emulation.intexitValue()See java.lang.Process#exitValue ();protected voidfinalize()InputStreamgetErrorStream()See java.lang.Process#getErrorStream (); The client is responsible for closing the stream explicitly.InputStreamgetInputStream()See java.lang.Process#getInputStream (); The client is responsible for closing the stream explicitly.OutputStreamgetOutputStream()See java.lang.Process#getOutputStream (); The client is responsible for closing the stream explicitly.inthangup()intinterrupt()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.intinterruptCTRLC()On Windows, interrupt the spawned program by send it a CTRL-C (even if it's a Cygwin program).booleanisRunning()intkill()longpid()intraise(int processID, int sig)Native method to drop a signal on the process with pid.intterminate()intwaitFor()See java.lang.Process#waitFor ();intwaitFor(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:
getInputStreamin classProcess
-
getOutputStream
public OutputStream getOutputStream()
See java.lang.Process#getOutputStream (); The client is responsible for closing the stream explicitly.- Specified by:
getOutputStreamin classProcess
-
getErrorStream
public InputStream getErrorStream()
See java.lang.Process#getErrorStream (); The client is responsible for closing the stream explicitly.- Specified by:
getErrorStreamin classProcess
-
waitFor
public int waitFor() throws InterruptedExceptionSee java.lang.Process#waitFor ();- Specified by:
waitForin 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.
-
-