class documentation

An operating-system Process that uses PTY support.

Method __init__ Spawn an operating-system process.
Method closeChildFD Close a file descriptor which is connected to the child process, identified by its FD in the child process.
Method closeStderr Close stderr.
Method closeStdin Close stdin after all data has been written out.
Method closeStdout Close stdout.
Method connectionLost I call this to clean up when one or all of my connections has died.
Method doRead Called when my standard output stream is ready for reading.
Method fileno This returns the file number of standard output on this process.
Method maybeCallProcessEnded Call processEnded on protocol after final cleanup.
Method writeSomeData Write some data to the open process.
Method writeToChild Similar to ITransport.write but also allows the file descriptor in the child process which will receive the bytes to be specified.
Instance Variable connected Undocumented
Instance Variable fd Undocumented
Instance Variable pid From before IProcessProtocol.makeConnection is called to before IProcessProtocol.processEnded is called, pid is an int giving the platform process ID of this process. pid is None at all other times.
Instance Variable status Undocumented
Method _setupChild Set up child process after fork() but before exec().

Inherited from FileDescriptor:

Method doWrite Called when data can be written.
Method getHost Similar to getPeer, but returns an address describing this side of the connection.
Method getPeer Get the remote address of this connection.
Method loseConnection Close the connection at the next available opportunity.
Method loseWriteConnection Undocumented
Method pauseProducing Pause producing data.
Method readConnectionLost Indicates read connection was lost.
Method resumeProducing Resume producing data.
Method startReading Start waiting for read availability.
Method startWriting Start waiting for write availability.
Method stopConsuming Stop consuming data.
Method stopProducing Stop producing data.
Method stopReading Stop waiting for read availability.
Method stopWriting Stop waiting for write availability.
Method write Reliably write some data.
Method writeConnectionLost Indicates write connection was lost.
Method writeSequence Reliably write a sequence of data.
Constant SEND_LIMIT Undocumented
Class Variable bufferSize Undocumented
Class Variable disconnecting Undocumented
Instance Variable dataBuffer Undocumented
Instance Variable disconnected Undocumented
Instance Variable offset Undocumented
Instance Variable producer Undocumented
Instance Variable producerPaused Undocumented
Instance Variable reactor Undocumented
Method _closeWriteConnection Undocumented
Method _isSendBufferFull Determine whether the user-space send buffer for this transport is full or not.
Method _maybePauseProducer Possibly pause a producer, if there is one and the send buffer is full.
Method _postLoseConnection Called after a loseConnection(), when all data has been written.
Class Variable _writeDisconnected Undocumented
Instance Variable _tempDataBuffer Undocumented
Instance Variable _tempDataLen Undocumented
Instance Variable _writeDisconnecting Undocumented

Inherited from _ConsumerMixin (via FileDescriptor):

Method registerProducer Register to receive data from a producer.
Method unregisterProducer Stop consuming data from a producer, without disconnecting.
Instance Variable streamingProducer bool or int

Inherited from _LogOwner (via FileDescriptor, _ConsumerMixin):

Method logPrefix Override this method to insert custom logging behavior. Its return value will be inserted in front of every line. It may be called more times than the number of output lines.
Method _getLogPrefix Determine the log prefix to use for messages related to applicationObject, which may or may not be an interfaces.ILoggingContext provider.

Inherited from _BaseProcess (via FileDescriptor, _ConsumerMixin, _LogOwner):

Method __repr__ String representation of a process.
Method reapProcess Try to reap a process (without blocking) via waitpid.
Method signalProcess Send the given signal signalID to the process. It'll translate a few signals ('HUP', 'STOP', 'INT', 'KILL', 'TERM') from a string representation to its int value, otherwise it'll pass directly the value provided...
Method _execChild The exec() which is done in the forked child.
Method _fork Fork and then exec sub-process.
Method _getReason Undocumented
Method _resetSignalDisposition Undocumented
Method _trySpawnInsteadOfFork Try to use posix_spawnp() instead of fork(), if possible.

Inherited from BaseProcess (via FileDescriptor, _ConsumerMixin, _LogOwner, _BaseProcess):

Method processEnded This is called when the child terminates.
Class Variable lostProcess Undocumented
Instance Variable proto Undocumented
Method _callProcessExited Undocumented
def __init__(self, reactor, executable, args, environment, path, proto, uid=None, gid=None, usePTY=None): (source)

Spawn an operating-system process.

This is where the hard work of disconnecting all currently open files / forking / executing the new process happens. (This is executed automatically when a Process is instantiated.)

This will also run the subprocess as a given user ID and group ID, if specified. (Implementation Note: this doesn't support all the arcane nuances of setXXuid on UNIX: it will assume that either your effective or real UID is 0.)

def closeChildFD(self, descriptor): (source)

Close a file descriptor which is connected to the child process, identified by its FD in the child process.

def closeStdin(self): (source)

Close stdin after all data has been written out.

def connectionLost(self, reason): (source)

I call this to clean up when one or all of my connections has died.

def doRead(self): (source)

Called when my standard output stream is ready for reading.

def fileno(self): (source)

This returns the file number of standard output on this process.

def maybeCallProcessEnded(self): (source)

Call processEnded on protocol after final cleanup.

def writeSomeData(self, data): (source)

Write some data to the open process.

def writeToChild(self, childFD, data): (source)

Similar to ITransport.write but also allows the file descriptor in the child process which will receive the bytes to be specified.

Parameters
childFDThe file descriptor to which to write.
dataThe bytes to write.
Raises
KeyErrorIf childFD is not a file descriptor that was mapped in the child when IReactorProcess.spawnProcess was used to create it.

Undocumented

From before IProcessProtocol.makeConnection is called to before IProcessProtocol.processEnded is called, pid is an int giving the platform process ID of this process. pid is None at all other times.

def _setupChild(self, masterfd, slavefd): (source)

Set up child process after fork() but before exec().

This involves:

  • closing masterfd, since it is not used in the subprocess
  • creating a new session with os.setsid
  • changing the controlling terminal of the process (and the new session) to point at slavefd
  • duplicating slavefd to standard input, output, and error
  • closing all other open file descriptors (according to _listOpenFDs)
  • re-setting all signal handlers to SIG_DFL
Parameters
masterfd:intThe master end of a PTY file descriptors opened with openpty.
slavefd:intThe slave end of a PTY opened with openpty.