DC3 (Device Control 3) is ASCII code point 19 (0x13), Unicode U+0013. It is a C0 control character best known as XOFF — the pause signal in XON/XOFF software flow control, paired with DC1/XON (0x11). When a receiving device's buffer nears capacity, it sends 0x13 to tell the sender to stop transmitting until a 0x11 clears the hold. Ctrl+S emits it, which is why accidentally pressing that combo in a terminal appears to freeze output — the fix is Ctrl+Q (XON). This pairing is still the default software flow control on RS-232 serial lines, and it is the reason binary file transfers over serial must use 8-bit clean modes or hardware flow control to prevent stray 0x13 bytes from halting the stream. UTF-8 encodes it as the single byte 0x13; Unicode classifies it as Cc (Control) with the alias DEVICE CONTROL THREE.
unsigned char dc3 = 0x13; // DC3 = XOFFunsigned char frame[] = {0x02,'A',dc3,'B',0x03}; // binary payloadif (memchr(frame, dc3, sizeof(frame))) {/* escape 0x13 when IXON is on */}
DC3 (ASCII 19) is XOFF — the 'transmit off' signal. It tells the sender to pause transmission because the receiver's buffer is filling up. It's the 'stop' half of the XON/XOFF flow control pair that's been managing data flow since the teletype era.
Ctrl+S sends DC3 (XOFF), which pauses terminal output. Your program is still running — you just can't see new output until you press Ctrl+Q (XON) to resume. This catches almost every developer off guard at least once.
Run 'stty -ixon' in your shell to disable XON/XOFF flow control. Add it to your .bashrc or .zshrc to make it permanent. This frees up Ctrl+S for other uses, like saving in terminal-based editors.
It's still the default on many serial connections to microcontrollers, GPS receivers, and industrial equipment. For terminal users, it's mostly a historical annoyance — but if you're doing embedded work, understanding XON/XOFF flow control is essential.