Skip to content

Files

Latest commit

4691ecc · Apr 1, 2025

History

History
46 lines (33 loc) · 1.23 KB

signal.md

File metadata and controls

46 lines (33 loc) · 1.23 KB

Signals

signal(SIGINT, handle_sigint);

What does this line do?

  • SIGINT:

    • SIGINT (Signal Interrupt) is a signal sent to a process when the user presses Ctrl+C in the terminal.
    • By default, this signal terminates the process.
  • signal(SIGINT, handle_sigint);:

    • This registers a custom signal handler function, handle_sigint, to be executed when the SIGINT signal is received.
    • Instead of terminating the process immediately, the program will call handle_sigint() when Ctrl+C is pressed.

Example Usage:

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

void handle_sigint(int sig) {
    printf("\nCaught signal %d (SIGINT). Ignoring Ctrl+C.\n", sig);
}

int main() {
    signal(SIGINT, handle_sigint);

    while (1) {
        printf("Running... Press Ctrl+C to test signal handling.\n");
        sleep(2);
    }

    return 0;
}
  • The handle_sigint function is called when Ctrl+C is pressed.
  • Instead of terminating the program, it prints a message.
  • The while (1) loop keeps the program running.

Tip

If better signal handling (like resetting behavior after handling) is required, use sigaction() instead of signal(), as signal() behavior can be inconsistent across systems.