Go to the first, previous, next, last section, table of contents.


Subprocess Execution

Control Input or Output of a window by another filter process. Use with care!

Exec

Command: exec [[fdpat] newcommand [args ... ]]
(none)
Run a unix subprocess (specified by an executable path newcommand and its optional arguments) in the current window. The flow of data between newcommands stdin/stdout/stderr, the process originally started (let us call it "application-process") and screen itself (window) is controlled by the filedescriptor pattern fdpat. This pattern is basically a three character sequence representing stdin, stdout and stderr of newcommand. A dot (.) connects the file descriptor to screen. An exclamation mark (!) causes the file descriptor to be connected to the application-process. A colon (:) combines both.
User input will go to newcommand unless newcommand receives the application-process' output (fdpats first character is `!' or `:') or a pipe symbol (`|') is added to the end of fdpat.
Invoking exec without arguments shows name and arguments of the currently running subprocess in this window. Only one subprocess can be running per window.
When a subprocess is running the kill command will affect it instead of the windows process. Only one subprocess a time can be running in each window.
Refer to the postscript file `doc/fdpat.ps' for a confusing illustration of all 21 possible combinations. Each drawing shows the digits 2, 1, 0 representing the three file descriptors of newcommand. The box marked `W' is usual pty that has the application-process on its slave side. The box marked `P' is the secondary pty that now has screen at its master side.

Using Exec

Abbreviations:

Examples:

!/bin/sh
exec /bin/sh
exec ... /bin/sh
All of the above are equivalent. Creates another shell in the same window, while the original shell is still running. Output of both shells is displayed and user input is sent to the new `/bin/sh'.
!!stty 19200
exec!stty 19200
exec !.. stty 19200
All of the above are equivalent. Set the speed of the window's tty. If your stty command operates on stdout, then add another `!'. This is a useful command, when a screen window is directly connected to a serial line that needs to be configured.
|less
exec !..| less
Both are equivalent. This adds a pager to the window output. The special character `|' is needed to give the user control over the pager although it gets its input from the window's process. This works, because `less' listens on stderr (a behavior that screen would not expect without the `|') when its stdin is not a tty. Less versions newer than 177 fail miserably here; good old pg still works.
!:sed -n s/.*Error.*/\007/p
Sends window output to both, the user and the sed command. The sed inserts an additional bell character (oct. 007) to the window output seen by screen. This will cause 'Bell in window x' messages, whenever the string `Error' appears in the window.


Go to the first, previous, next, last section, table of contents.