Coder Perfect

Ctrl c is the command equivalent for canceling a program.

Problem

I’m trying to end a long linux program that’s running on a distant system, but using the kill command causes the program to exit without preserving its results. Normally, I use Ctrl+C to finish a program, and the software saves the results, but I am not in the machine that is running the session right now, so I can’t use Ctrl+C.

My question is, is there a method to execute the equivalent of Ctrl+C from afar?

Asked by Eduardo

Solution #1

Try:

kill -SIGINT processPIDHere

Basically, unless you specify otherwise, Ctrl C transmits the SIGINT (interrupt) signal and kill delivers the SIGTERM (termination) signal.

Answered by Firas Assaad

Solution #2

The ctrl c key only sends a SIGINT signal, although there are some additional signals that are softer. http://www.gnu.org/software/libtool/manual/libc/Termination-Signals.html

I think that you can use the the kill command to send some other signal. (see man kill for more info)

Answered by Johan

Solution #3

Here’s a mongod example.

To run the daemon from the command prompt, type:

mongod &

Then later

kill -SIGINT `pgrep mongod`

Answered by Michael Cole

Solution #4

If you control the long-running remote process, you could install a signal handler for SIGTERM (see man signal and man sigaction and the many SO questions on this topic), to cleanup nicely before dieing.

That is a very common occurrence.

Answered by dmckee — ex-moderator kitten

Solution #5

Keep in mind that your signal handler is similar to an interrupt handler in that you are limited in what you can do in it without causing problems elsewhere in your program. Setting an atomic t “should quit” variable is the best option here.

Answered by Ana Betts

Post is based on https://stackoverflow.com/questions/514771/equivalent-of-ctrl-c-in-command-to-cancel-a-program