Class Spawner


  • public class Spawner
    extends 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​(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.
    • 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

        @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

        @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 573677
        Executes 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 573677
        Executes 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 573677
        Executes the specified string command in a separate process with the specified environment and working directory.
        Throws:
        IOException
    • Method Detail

      • getInputStream

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

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

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

        public int exitValue()
        See java.lang.Process#exitValue ();
        Specified by:
        exitValue in class 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 Process
      • pid

        public long pid()
        Overrides:
        pid in class 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()
      • 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.