I have a program running on a remote machine which expects to receive SIGINT from the parent. That program needs to receive that signal to function correctly. Unfortunately, if I run that process remotely over SSH and send SIGINT, the ssh process itself traps and interrupts rather than forwarding the signal.
Here's an example of this behavior using GDB:
Running locally:
$ gdb GNU gdb 6.3.50-20050815 (Apple version gdb-1344) (Fri Jul 3 01:19:56 UTC 2009) ... This GDB was configured as "x86_64-apple-darwin". ^C (gdb) Quit ^C (gdb) Quit ^C (gdb) Quit
Running remotely:
$ ssh foo.bar.com gdb GNU gdb Red Hat Linux (6.3.0.0-1.159.el4rh) ... This GDB was configured as "i386-redhat-linux-gnu". (gdb) ^C Killed by signal 2. $
Can anybody suggest a way of working around this problem? The local ssh client is OpenSSH_5.2p1.
$ ssh -t foo.bar.com gdb ... (gdb) ^C Quit
Try signal SIGINT
at the gdb prompt.
It looks like you're doing ctrl+c. The problem is that your terminal window is sending SIGINT to the ssh process running locally, not to the process on the remote system.
You'll have to specify a signal manually using the kill
command or system call on the remote system.
or more conveniently using killall
$killall -INT gdb
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With