9

I know I can kill any process with kill -9 command . But sometimes i see that even if I have terminated a program with CTRL+C , the process doesn't get killed . So I want to know the difference between kill -9 vs CTRL+C

Geek
  • 6,548
  • 15
  • 46
  • 70

1 Answers1

12

^C send the interrupt signal, which can be handled by a program (you can ignore it)

kill -9 send the sigkill signal which kills the program that you can't handle.

That's why you can't kill some programs with ^C

daisy
  • 53,527
  • 78
  • 236
  • 383
  • 3
    One critical difference is that "well behaved" programs will catch ctrl-C and clean up after themselves (detach from any shared resources, destroy temporary files, reset the terminal to a sane state), SIGKILL doesn't give them that chance. BTW, it can happen that a program is stuck in an unkillable state inside the kernel. – vonbrand Jan 23 '13 at 12:38
  • 6
    @l0b0: `^C` sends `SIGINT`. `kill` (without `-9`) sends `SIGTERM`. Both those work the same, and can be handled by the program, but they're independent signals. – ams Jan 23 '13 at 13:00
  • 2
    If `^C` doesn't work then you should try `kill` next, and then only `kill -9` if you have to. The difference is that `kill` on it's own gives the program chance to clean up its files and whatnot. `kill -9` just removes it without asking nicely. – ams Jan 23 '13 at 13:03
  • Aka. `SIGINT` (thanks @ams) and `SIGKILL` – l0b0 Jan 23 '13 at 13:56