detachtty, attachtty - run an interactive program with io to a unix-
detachtty [--no-detach] [--dribble-file dribblename] [--log-
file name] [--pid-file pidname] socket-path command [arguments-to-
detachtty lets you run interactive programs non-interactively, and
connect to them (optionally over the network) when you do need to
interact with them. command is run on a pseudo-terminal, and data is
copied between it and a unix(7)-domain socket named socket-path.
command runs with the current user’s permissions and environment
attachtty is used to connect to a process running under detachtty. It
copies between socket-path and stdin/out. It also catches SIGINT and
arranges for it to be forwarded to the command, so the user may use
Control-C in the usual fashion.
If you’ve used screen, it’s a similar concept. Compared to screen,
* no capability to swap between different screens (it doesn’t co-opt
* no tty emulation (you can sanely use it in emacs comint modes)
* no features (less to go wrong)
* no configuration file
* ability to spawn ssh to securely connect across the network
These programs approximately follow the usual GNU command line syntax,
using long options that start with two dashes (‘--’). For detachtty,
the options are
Don’t fork into the background. Useful if you wish to start the
program from inittab(5)
All input from and to the program being run is copied into
dribblename (if unspecified, it is discarded)
Status messages (client connects, disconnects, errors) are sent
to name (if unspecified, they go to standard error)
The process ID of attachtty is written to pidname. See SIGNALS
The unix-domain socket. If access to command should be in any
way restricted, so should this socket - i.e. it is recommended
that you put it in a mode 700 directory.
The command to run (which is searched for in the normal way).
All remaining command line parameters are passed to it as
attachtty takes a single argument, which is either the path to socket-
path, or a "remote path" of the form username@host:socket-path where
username@host is passed to ssh. No provision is made to accept
password input, so ssh must be able to make a connection without
needing it. See ssh-agent(1)
To detach from the tty without exiting from the server process, send
attachtty any signal that it doesn’t catch. See the SIGNALS section
detachtty does not search the user’s PATH environment variable for the
program to execute, so a full pathname must be provided.
If you get an immediate "Child terminated, exiting" message from
detachtty, this usually means that the program you specified was not
found or could not be executed (on Linux 2.4, execve(1) succeeds even
if it didn’t, so to speak).
You will probably go insane a lot more slowly if you use absolute
pathnames for all filename arguments.
Sending SIGHUP to the process identified by pidname will cause
detachtty to close and reopen its log files.
Sending SIGQUIT to an attachtty process (usually from the keyboard with
^\) will cause it to detach from the tty and quit leaving the server
process running. Sometimes you need to press it twice
screen(1), ssh(1), ssh-agent(1), sbcl(1).
Written by Daniel Barlow <email@example.com>, and a cast of units.
May 31, 2001