Go to the latest version of this document.

# ``twisted`.`internet`.`_dumbwin32proc`.`Process``

class documentation

`class Process(_pollingfile._PollingTimer, BaseProcess): (source)`

Constructor: `Process(reactor, protocol, command, args, ...)`

Implements interfaces: `twisted.internet.interfaces.IConsumer`, `twisted.internet.interfaces.IProcessTransport`, `twisted.internet.interfaces.IProducer`

View In Hierarchy

A process that integrates with the Twisted event loop.

If your subprocess is a python program, you need to:

- Run python.exe with the '-u' command line option - this turns on unbuffered I/O. Buffering stdout/err/in can cause problems, see e.g. http://support.microsoft.com/default.aspx?scid=kb;EN-US;q1903

- If you don't want Windows messing with data passed over stdin/out/err, set the pipes to be in binary mode:

       import os, sys, mscvrt
       msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
       msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
       msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)

Method | `__init__` | Create a new child process.
Method | `__repr__` | Return a string representation of the 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 the process' stdin.
Method | `closeStdout` | Close stdout.
Method | `connectionLostNotify` | Will be called 3 times, by stdout/err threads and process handle.
Method | `errConnectionLost` | Undocumented
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 | `inConnectionLost` | Undocumented
Method | `loseConnection` | Close the process' stdout, in and err.
Method | `maybeCallProcessEnded` | Call processEnded on protocol after final cleanup.
Method | `outConnectionLost` | Undocumented
Method | `pauseProducing` | Undocumented
Method | `registerProducer` | Register to receive data from a producer.
Method | `resumeProducing` | Undocumented
Method | `signalProcess` | Send a signal to the process.
Method | `stopProducing` | Stop producing data.
Method | `unregisterProducer` | Stop consuming data from a producer, without disconnecting.
Method | `write` | Write data to the process' stdin.
Method | `writeSequence` | Write data to the process' stdin.
Method | `writeToChild` | Similar to `ITransport.write` but also allows the file descriptor in the child process which will receive the bytes to be specified.
Class Variable | `closedNotifies` | Undocumented
Instance Variable | `hProcess` | Undocumented
Instance Variable | `hStderrR` | Undocumented
Instance Variable | `hStdinW` | Undocumented
Instance Variable | `hStdoutR` | Undocumented
Instance Variable | `hThread` | Undocumented
Instance Variable | `stderr` | Undocumented
Instance Variable | `stdin` | Undocumented
Instance Variable | `stdout` | Undocumented
Method | `_getReason` | Undocumented

Inherited from `_PollingTimer`:

Instance Variable | `reactor` | Undocumented
Method | `_addPollableResource` | Undocumented
Method | `_checkPollingState` | Undocumented
Method | `_pause` | Undocumented
Method | `_pollEvent` | Undocumented
Method | `_reschedule` | Undocumented
Method | `_startPolling` | Undocumented
Method | `_stopPolling` | Undocumented
Method | `_unpause` | Undocumented
Instance Variable | `_currentTimeout` | Undocumented
Instance Variable | `_paused` | Undocumented
Instance Variable | `_pollTimer` | Undocumented
Instance Variable | `_resources` | Undocumented

Inherited from `BaseProcess` (via `_PollingTimer`):

Method | `processEnded` | This is called when the child terminates.
Class Variable | `lostProcess` | Undocumented
Instance Variable | `pid` | Undocumented
Instance Variable | `proto` | Undocumented
Instance Variable | `status` | Undocumented
Method | `_callProcessExited` | Undocumented

def __init__(self, reactor, protocol, command, args, environment, path): (source)
overrides `twisted.internet._pollingfile._PollingTimer.__init__`

Create a new child process.

def __repr__(self) -> `str`: (source)

Return a string representation of the process.

def closeChildFD(self, fd): (source)
from `twisted.internet.interfaces.IProcessTransport`

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

def closeStderr(self): (source)
from `twisted.internet.interfaces.IProcessTransport`

Close stderr.

def closeStdin(self): (source)
from `twisted.internet.interfaces.IProcessTransport`

Close the process' stdin.

def closeStdout(self): (source)
from `twisted.internet.interfaces.IProcessTransport`

Close stdout.

def connectionLostNotify(self): (source)

Will be called 3 times, by stdout/err threads and process handle.

def errConnectionLost(self): (source)

Undocumented

def getHost(self): (source)
from `twisted.internet.interfaces.ITransport`

Similar to getPeer, but returns an address describing this side of the connection.

Returns
An `IAddress` provider.

def getPeer(self): (source)
from `twisted.internet.interfaces.ITransport`

Get the remote address of this connection.

Treat this method with caution. It is the unfortunate result of the CGI and Jabber standards, but should not be considered reliable for the usual host of reasons; port forwarding, proxying, firewalls, IP masquerading, etc.

Returns
An `IAddress` provider.

def inConnectionLost(self): (source)

Undocumented

def loseConnection(self): (source)
from `twisted.internet.interfaces.IProcessTransport`

Close the process' stdout, in and err.

def maybeCallProcessEnded(self): (source)
overrides `twisted.internet._baseprocess.BaseProcess.maybeCallProcessEnded`

Call processEnded on protocol after final cleanup.

def outConnectionLost(self): (source)

Undocumented

def pauseProducing(self): (source)

Undocumented

def registerProducer(self, producer, streaming): (source)
from `twisted.internet.interfaces.IConsumer`

Register to receive data from a producer.

This sets self to be a consumer for a producer. When this object runs out of data (as when a send(2) call on a socket succeeds in moving the last data from a userspace buffer into a kernelspace buffer), it will ask the producer to resumeProducing().

For `IPullProducer` providers, `resumeProducing` will be called once each time data is required.

For `IPushProducer` providers, `pauseProducing` will be called whenever the write buffer fills up and `resumeProducing` will only be called when it empties. The consumer will only call `resumeProducing` to balance a previous `pauseProducing` call; the producer is assumed to start in an un-paused state.

Parameters
producer | Undocumented
streaming | `True` if `producer` provides `IPushProducer`, `False` if `producer` provides `IPullProducer`.

Raises
`RuntimeError` | If a producer is already registered.

def resumeProducing(self): (source)

Undocumented

def signalProcess(self, signalID): (source)
from `twisted.internet.interfaces.IProcessTransport`

Send a signal to the process.

Parameters

signalID

can be

- one of `"KILL"`, `"TERM"`, or `"INT"`. These will be implemented in a cross-platform manner, and so should be used if possible.
- an integer, where it represents a POSIX signal ID.

Raises
`twisted.internet.error.ProcessExitedAlready` | If the process has already exited.
`OSError` | If the `os.kill` call fails with an errno different from `ESRCH`.

def stopProducing(self): (source)
from `twisted.internet.interfaces.IProducer`

Stop producing data.

This tells a producer that its consumer has died, so it must stop producing data for good.

def unregisterProducer(self): (source)
from `twisted.internet.interfaces.IConsumer`

Stop consuming data from a producer, without disconnecting.

def write(self, data): (source)
from `twisted.internet.interfaces.ITransport`

Write data to the process' stdin.

Parameters
data:`bytes` | Undocumented

def writeSequence(self, seq): (source)
from `twisted.internet.interfaces.ITransport`

Write data to the process' stdin.

Parameters
seq:`list` of `bytes` | Undocumented

def writeToChild(self, fd, data): (source)
from `twisted.internet.interfaces.IProcessTransport`

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

This implementation is limited to writing to the child's standard input.

Parameters
fd:`int` | The file descriptor to which to write. Only stdin (`0`) is supported.
data:`bytes` | The bytes to write.

Returns
`None`

Raises
`KeyError` | If `fd` is anything other than the stdin file descriptor (`0`).

closedNotifies: `int` = (source)

Undocumented

hProcess = (source)

Undocumented

hStderrR = (source)

Undocumented

hStdinW = (source)

Undocumented

hStdoutR = (source)

Undocumented

hThread = (source)

Undocumented

stderr = (source)

Undocumented

stdin = (source)

Undocumented

stdout = (source)

Undocumented

def _getReason(self, status): (source)

Undocumented