#!/bin/sh # # Trick process(es) to talk to current terminal # # Copyright (c) 2004, 2005 Timo Lindfors # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. The name of the author may not be used to endorse or promote # products derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. function usage() { echo usage: $0 pid ... exit 1 } TCGETS=0x5401 TCSETS=0x5402 SIZEOF_STRUCT_TERMIOS=60 O_RDWR=2 ((FLAGS=O_RDWR)) if [ x`which gdb` = x ]; then echo gdb not found in PATH. Please apt-get install gdb exit fi if [ x$1 = x ]; then usage; fi for PID in $@; do MYPID=$$ MYFD0=`readlink /proc/$MYPID/fd/0` MYFD1=`readlink /proc/$MYPID/fd/1` MYFD2=`readlink /proc/$MYPID/fd/2` EXE=`readlink /proc/$PID/exe` if [ x$EXE = x ]; then echo $0: $PID: no such pid exit fi BATCHFILE=`mktemp /tmp/gdb.XXXXXXXXXXXX` cat >$BATCHFILE </dev/null 2>&1