Package ghidra.pty.linux

# Class LinuxPtyChild

java.lang.Object
ghidra.pty.linux.LinuxPtyEndpoint
ghidra.pty.linux.LinuxPtyChild

All Implemented Interfaces:
  `PtyChild`, `PtyEndpoint`

public class LinuxPtyChild extends LinuxPtyEndpoint implements PtyChild

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface ghidra.pty.PtyChild

  `PtyChild.Echo, PtyChild.TermMode`

- ## Field Summary

  ### Fields inherited from class ghidra.pty.linux.LinuxPtyEndpoint

  `fd`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `nullSession(Collection<PtyChild.TermMode> mode)`
  Start a session without a real leader, instead obtaining the pty's name
  `PtySession`
  `session(String[] args, Map<String,String> env, File workingDirectory, Collection<PtyChild.TermMode> mode)`
  Spawn a subprocess in a new session whose controlling tty is this pseudo-terminal
  `protected PtySession`
  `sessionUsingJavaLeader(String[] args, Map<String,String> env, File workingDirectory, Collection<PtyChild.TermMode> mode)`

  ### Methods inherited from class ghidra.pty.linux.LinuxPtyEndpoint

  `getInputStream, getOutputStream`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface ghidra.pty.PtyChild

  `nullSession, session, session`

  ### Methods inherited from interface ghidra.pty.PtyEndpoint

  `getInputStream, getOutputStream`

- ## Method Details

  - ### nullSession

    public String nullSession(Collection<PtyChild.TermMode> mode)
    Description copied from interface: `PtyChild`
    Start a session without a real leader, instead obtaining the pty's name

    This method or any other `session` method can only be invoked once per pty. It must be called before anyone reads the parent's output stream, since obtaining the filename may be implemented by the parent sending commands to its child.

    If the child end of the pty is on a remote system, this should be the file (or other resource) name as it would be accessed on that remote system.

    Specified by:
      `nullSession` in interface `PtyChild`
    Parameters:
      `mode` - the terminal mode. If a mode is not implemented, it may be silently ignored.
    Returns:
      the file name

  - ### session

    public PtySession session(String[] args, Map<String,String> env, File workingDirectory, Collection<PtyChild.TermMode> mode) throws IOException
    Spawn a subprocess in a new session whose controlling tty is this pseudo-terminal

    This method or `PtyChild.nullSession(Collection)` can only be invoked once per pty.

    Specified by:
      `session` in interface `PtyChild`
    Parameters:
      `args` - the image path and arguments
      `env` - the environment
      `workingDirectory` - the working directory
      `mode` - the terminal mode. If a mode is not implemented, it may be silently ignored.
    Returns:
      a handle to the subprocess
    Throws:
      `IOException` - if the session could not be started

  - ### sessionUsingJavaLeader

    protected PtySession sessionUsingJavaLeader(String[] args, Map<String,String> env, File workingDirectory, Collection<PtyChild.TermMode> mode) throws IOException
    Throws:
      `IOException`