When I try to stop something, I use ^C and sometimes ^D in terminal.

What's the difference between the two? Why some program doesn't respond to ^C, but ^D. Why the Terminal.app just quits when I use ^D?

link|improve this question

74% accept rate
feedback

2 Answers

up vote 11 down vote accepted

CtrlC tells the terminal to send a SIGINT to the current foreground process, which by default translates into terminating the application. CtrlD tells the terminal that it should register a EOF on standard input, which bash interprets as a desire to exit.

link|improve this answer
feedback

Ctrl+D (^D) means end of file. It only works at the beginning of a line (I'm simplifying a little), and has no effect if the program isn't reading input from the terminal. In your experiment, ^D told the shell that you weren't going to type any more commands, so it exited; then the terminal exited because its subprogram had terminated.

Ctrl+C (^C) means “interrupt”, i.e., stop what you're doing. Technically, pressing ^C sends the INT signal, which by default terminates an application, but which in many programs means go back to the top level (e.g., in a shell, stop typing a command line and go back to a pristine prompt).

If a program doesn't respond to ^C, you can try Ctrl+\ (^\). This sends the QUIT signal, which by default terminates an application, and which not so many programs intercept.

Another key that sends a signal is Ctrl+Z (^Z). It sends the TSTP signal, which pauses the program running in the foreground. (TSTP is short for “terminal stop”; it's similar to STOP but TSTP can be ignored whereas STOP cannot.) From the shell, you can resume that program's execution with the fg command (resume in the foreground) or the bg command (resume in the background).

All of these keys can be changed with the stty command. Some programs, particularly full-screen programs that have key bindings, disable them.

link|improve this answer
A small correction: Control-Z sends the TSTP (terminal stop) signal. This can be caught or ignored by processes, whereas the STOP signal cannot be. – Chris Page Sep 19 '11 at 11:53
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.