In graphical user interface environments that use the control key to control the active program, control-C is often used to copy highlighted text to the clipboard. In many command-line interface environments, control-C is used to abort the current task and regain user control. It is a special sequence which causes the operating system to send a signal to the active program. Usually the signal causes it to end, but the program may "catch" it and do something else, typically returning control to the user.
In graphical environments
Ctrl-C was one of a handful of keyboard sequences chosen by the program designers at Xerox PARC to control text editing, with Ctrl-Z (Undo), Ctrl-X (Cut), Ctrl-V (Paste), and Ctrl-P (Print). The first four letters are all located together at the left end of the bottom row of the standard QWERTY keyboard, and P towards the upper right. The equivalent key combination on Macintosh computers is Command-C.
In command-line environments
Control-C as an abort command was popularized by TOPS-20 and TOPS-10 and adopted by other systems including Unix. It was also adopted by Digital Equipment operating systems, from which it was copied to CP/M and thus to MS-DOS and Microsoft Windows. In POSIX systems, the sequence causes the active program to receive SIGINT, the interruption signal. If the program does not specify how to handle this condition, it is terminated. Typically a program which does handle a SIGINT will still terminate itself, or at least terminate the task running inside it.
This system is usually preserved even in graphical terminal emulators. If control-C is used for copy-and-paste in the graphical environment, an ambiguity arises. Typically an alternate keystroke is assigned to one of the commands, and both appear in the emulator's menus.
As many keyboards and computer terminals once directly generated ASCII code, the choice of control-C overlapped with the ASCII end-of-text character. This character has a numerical value of three, as "C" is the third letter of the alphabet. It was chosen to cause an interrupt as it is otherwise unlikely to be part of a program's interactive interface. Many other control codes, such as control-D for the end-of-transmission character, do not generate signals and are occasionally used to control a program.