Class Spawner


  • public class Spawner
    extends java.lang.Process
    • Field Summary

      Fields 
      Modifier and Type Field Description
      int CTRLC
      A fabricated signal number for use on Windows only.
      int HUP  
      int INT
      On Windows, what this does is far from easy to explain.
      int KILL  
      int NOOP  
      int TERM  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected Spawner​(java.lang.String command)
      Executes the specified string command in a separate process.
      protected Spawner​(java.lang.String[] cmdarray)
      Executes the specified command and arguments in a separate process.
      protected Spawner​(java.lang.String[] cmdarray, java.lang.String[] envp)
      Executes the specified command and arguments in a separate process with the specified environment.
      protected Spawner​(java.lang.String[] cmdarray, java.lang.String[] envp, java.io.File dir)
      Executes the specified command and arguments in a separate process with the specified environment and working directory.
      protected Spawner​(java.lang.String[] cmdarray, java.lang.String[] envp, java.io.File dir, PTY pty)  
        Spawner​(java.lang.String command, boolean bNoRedirect)  
      protected Spawner​(java.lang.String cmd, java.lang.String[] envp)
      Executes the specified string command in a separate process with the specified environment.
      protected Spawner​(java.lang.String command, java.lang.String[] envp, java.io.File dir)
      Executes the specified string command in a separate process with the specified environment and working directory.
    • 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​(java.lang.String[] cmdarray, java.lang.String[] envp, java.lang.String dirpath)  
      int exec2​(java.lang.String[] cmdarray, java.lang.String[] envp, java.lang.String dir, Spawner.IChannel[] chan, java.lang.String slaveName, int masterFD, boolean console)
      Native method when executing with a terminal emulation.
      int exitValue()
      See java.lang.Process#exitValue ();
      protected void finalize()  
      java.io.InputStream getErrorStream()
      See java.lang.Process#getErrorStream (); The client is responsible for closing the stream explicitly.
      java.io.InputStream getInputStream()
      See java.lang.Process#getInputStream (); The client is responsible for closing the stream explicitly.
      java.io.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()  
      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, pid, supportsNormalTermination, toHandle, waitFor
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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)
        On non-Windows, raising this just raises a POSIX SIGINT
      • 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

        public Spawner​(java.lang.String command,
                       boolean bNoRedirect)
                throws java.io.IOException
        Throws:
        java.io.IOException
      • Spawner

        protected Spawner​(java.lang.String[] cmdarray,
                          java.lang.String[] envp,
                          java.io.File dir)
                   throws java.io.IOException
        Executes the specified command and arguments in a separate process with the specified environment and working directory.
        Throws:
        java.io.IOException
      • Spawner

        protected Spawner​(java.lang.String[] cmdarray,
                          java.lang.String[] envp,
                          java.io.File dir,
                          PTY pty)
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • Spawner

        protected Spawner​(java.lang.String command)
                   throws java.io.IOException
        Executes the specified string command in a separate process.
        Throws:
        java.io.IOException
      • Spawner

        protected Spawner​(java.lang.String[] cmdarray)
                   throws java.io.IOException
        Executes the specified command and arguments in a separate process.
        Throws:
        java.io.IOException
      • Spawner

        protected Spawner​(java.lang.String[] cmdarray,
                          java.lang.String[] envp)
                   throws java.io.IOException
        Executes the specified command and arguments in a separate process with the specified environment.
        Throws:
        java.io.IOException
      • Spawner

        protected Spawner​(java.lang.String cmd,
                          java.lang.String[] envp)
                   throws java.io.IOException
        Executes the specified string command in a separate process with the specified environment.
        Throws:
        java.io.IOException
      • Spawner

        protected Spawner​(java.lang.String command,
                          java.lang.String[] envp,
                          java.io.File dir)
                   throws java.io.IOException
        Executes the specified string command in a separate process with the specified environment and working directory.
        Throws:
        java.io.IOException
    • Method Detail

      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable
      • getInputStream

        public java.io.InputStream getInputStream()
        See java.lang.Process#getInputStream (); The client is responsible for closing the stream explicitly.
        Specified by:
        getInputStream in class java.lang.Process
      • getOutputStream

        public java.io.OutputStream getOutputStream()
        See java.lang.Process#getOutputStream (); The client is responsible for closing the stream explicitly.
        Specified by:
        getOutputStream in class java.lang.Process
      • getErrorStream

        public java.io.InputStream getErrorStream()
        See java.lang.Process#getErrorStream (); The client is responsible for closing the stream explicitly.
        Specified by:
        getErrorStream in class java.lang.Process
      • waitFor

        public int waitFor()
                    throws java.lang.InterruptedException
        See java.lang.Process#waitFor ();
        Specified by:
        waitFor in class java.lang.Process
        Throws:
        java.lang.InterruptedException
      • exitValue

        public int exitValue()
        See java.lang.Process#exitValue ();
        Specified by:
        exitValue in class java.lang.Process
      • 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()
        Specified by:
        destroy in class java.lang.Process
      • 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​(java.lang.String[] cmdarray,
                                  java.lang.String[] envp,
                                  java.lang.String dirpath)
                           throws java.io.IOException
        Throws:
        java.io.IOException
      • exec2

        public int exec2​(java.lang.String[] cmdarray,
                         java.lang.String[] envp,
                         java.lang.String dir,
                         Spawner.IChannel[] chan,
                         java.lang.String slaveName,
                         int masterFD,
                         boolean console)
                  throws java.io.IOException
        Native method when executing with a terminal emulation.
        Throws:
        java.io.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.