Retty

Retty (short for “remote tty”) makes TCP connections available as pseudo ttys. It allows you to use access servers with direct access to the
modems (such as Cisco NAS) as ordinary dial-out modems for faxing, sending sms or visiting BBS’. It offers functionality similar to Cisco’s Dialout Utility, but on GNU/Linux instead of Windows.

It can also attach to processes running on another terminal. This is useful, for example, when you run an application locally and then decide you want to use that running application from some remote location. You can run retty on it, do your work, and detach application back again.

Its advantage over screen is that you don’t have to run the processes on retty in advance. Unlike screen, you need to make no special provisions in advance – just get the process’ pid and attach it anytime.

By default, retty attaches file descriptors 0, 1 and 2 of process. That should be enough in most cases, but will not do in some special ones. In such case, you have to check /proc//fd and force retty to attach correct file descriptors instead.

PID
PID of process that we want to attach. If retty is run as ordinary user, it can attach only processes owned by that user. If run as root, retty can attach probably anything (not always good idea).

Bugs

* retty is x86-specific and works only on Linux.
* The attached process’ controlling terminal is not switched appropriately, which causes many funny effects (e.g. mutt not properly adjusting for your window size, but this can be fixed by going into editor and back), annoying bugs (ctrl+c not delivered properly) and totally breaking attaching for some applications (OpenSSH).
* If you attach bash it imagines EOF on stdin. Attaching and detaching multiple times without any activity in the meantime will cause it to die.
* Attempts to attach less just don’t work even with input fd override.

This might or might not be fixed in the future, depending on cause (which is unknown now).