FreeToGenerate.com

Signal 10 is SIGUSR1 on x86 and SIGBUS almost everywhere else. A hard-coded number does not fail on the wrong machine — it does something else.

What does this number mean?

x86, ARM and most Linux
SIGUSR1
Alpha and SPARC
SIGBUS
MIPS
SIGBUS
PA-RISC
SIGBUS
macOS
SIGBUS

This number means different things on different platforms. Code that hard-codes it does not fail loudly on the wrong machine — it does something else instead.

The numbers are not arbitrary — they follow a family tree

31 of the signals both sources define, macOS matches Alpha and SPARC 31 · x86, ARM and most Linux 19

macOS and the Alpha and SPARC architectures all descend from BSD, while Linux on x86 took the System V numbering instead. So one column of the Linux table is, in effect, the BSD column — and the disagreement between the two families is the whole reason a number is unsafe to hard-code.

39 signals

The signal does not exist on that platform at all — which is a different fact from having a different number.

SIGABRTP1990Core ends it and writes a core dump
x86, ARM and most Linux
6
Alpha and SPARC
6
MIPS
6
PA-RISC
6
macOS
6

Abort signal from abort(3)

SIGALRMP1990Term ends the process
x86, ARM and most Linux
14
Alpha and SPARC
14
MIPS
14
PA-RISC
14
macOS
14

Timer signal from alarm(2)

SIGBUSP2001Core ends it and writes a core dumpnumber reused
x86, ARM and most Linux
7
Alpha and SPARC
10
MIPS
10
PA-RISC
10
macOS
10

Bus error (bad memory access)

SIGCHLDP2001Ign ignored unless you handle itnumber reused
x86, ARM and most Linux
17
Alpha and SPARC
20
MIPS
18
PA-RISC
18
macOS
20

Child stopped, terminated, or continued

SIGCLDIgn ignored unless you handle itnumber reused
x86, ARM and most Linux
absent
Alpha and SPARC
absent
MIPS
18
PA-RISC
absent
macOS
absent

A synonym for SIGCHLD

SIGCONTP1990Cont resumes it if stoppednumber reused
x86, ARM and most Linux
18
Alpha and SPARC
19
MIPS
25
PA-RISC
26
macOS
19

Continue if stopped

SIGEMTTerm ends the processnumber reused
x86, ARM and most Linux
absent
Alpha and SPARC
7
MIPS
7
PA-RISC
absent
macOS
7

Emulator trap

SIGFPEP1990Core ends it and writes a core dump
x86, ARM and most Linux
8
Alpha and SPARC
8
MIPS
8
PA-RISC
8
macOS
8

Erroneous arithmetic operation

SIGHUPP1990Term ends the process
x86, ARM and most Linux
1
Alpha and SPARC
1
MIPS
1
PA-RISC
1
macOS
1

Hangup detected on controlling terminal

SIGILLP1990Core ends it and writes a core dump
x86, ARM and most Linux
4
Alpha and SPARC
4
MIPS
4
PA-RISC
4
macOS
4

Illegal Instruction

SIGINFOnumber reused
x86, ARM and most Linux
absent
Alpha and SPARC
29
MIPS
absent
PA-RISC
absent
macOS
29

Alpha and SPARC differ: Alpha 29, SPARC absent

SIGINTP1990Term ends the process
x86, ARM and most Linux
2
Alpha and SPARC
2
MIPS
2
PA-RISC
2
macOS
2

Interrupt from keyboard

SIGIOTerm ends the processnumber reused
x86, ARM and most Linux
29
Alpha and SPARC
23
MIPS
22
PA-RISC
22
macOS
23

I/O now possible (4.2BSD)

SIGIOTCore ends it and writes a core dump
x86, ARM and most Linux
6
Alpha and SPARC
6
MIPS
6
PA-RISC
6
macOS
absent

IOT trap. A synonym for SIGABRT

SIGKILLP1990Term ends the process
x86, ARM and most Linux
9
Alpha and SPARC
9
MIPS
9
PA-RISC
9
macOS
9

Kill signal

SIGLOSTTerm ends the processnumber reused
x86, ARM and most Linux
absent
Alpha and SPARC
29
MIPS
absent
PA-RISC
absent
macOS
absent

Alpha and SPARC differ: Alpha absent, SPARC 29

File lock lost (unused)

SIGPIPEP1990Term ends the process
x86, ARM and most Linux
13
Alpha and SPARC
13
MIPS
13
PA-RISC
13
macOS
13

Broken pipe: write to pipe with no

SIGPOLLP2001Term ends the processnumber reused
x86, ARM and most Linux
absent
Alpha and SPARC
absent
MIPS
absent
PA-RISC
absent
macOS
7

Pollable event (Sys V);

SIGPROFP2001Term ends the processnumber reused
x86, ARM and most Linux
27
Alpha and SPARC
27
MIPS
29
PA-RISC
21
macOS
27

Profiling timer expired

SIGPWRTerm ends the processnumber reused
x86, ARM and most Linux
30
Alpha and SPARC
29
MIPS
19
PA-RISC
19
macOS
absent

Alpha and SPARC differ: Alpha 29, SPARC absent

Power failure (System V)

SIGQUITP1990Core ends it and writes a core dump
x86, ARM and most Linux
3
Alpha and SPARC
3
MIPS
3
PA-RISC
3
macOS
3

Quit from keyboard

SIGSEGVP1990Core ends it and writes a core dump
x86, ARM and most Linux
11
Alpha and SPARC
11
MIPS
11
PA-RISC
11
macOS
11

Invalid memory reference

SIGSTKFLTTerm ends the processnumber reused
x86, ARM and most Linux
16
Alpha and SPARC
absent
MIPS
absent
PA-RISC
7
macOS
absent

Stack fault on coprocessor (unused)

SIGSTKSZ
x86, ARM and most Linux
absent
Alpha and SPARC
absent
MIPS
absent
PA-RISC
absent
macOS
131072
SIGSTOPP1990Stop suspends the processnumber reused
x86, ARM and most Linux
19
Alpha and SPARC
17
MIPS
23
PA-RISC
24
macOS
17

Stop process

SIGSYSP2001Core ends it and writes a core dumpnumber reused
x86, ARM and most Linux
31
Alpha and SPARC
12
MIPS
12
PA-RISC
31
macOS
12

Bad system call (SVr4);

SIGTERMP1990Term ends the process
x86, ARM and most Linux
15
Alpha and SPARC
15
MIPS
15
PA-RISC
15
macOS
15

Termination signal

SIGTRAPP2001Core ends it and writes a core dump
x86, ARM and most Linux
5
Alpha and SPARC
5
MIPS
5
PA-RISC
5
macOS
5

Trace/breakpoint trap

SIGTSTPP1990Stop suspends the processnumber reused
x86, ARM and most Linux
20
Alpha and SPARC
18
MIPS
24
PA-RISC
25
macOS
18

Stop typed at terminal

SIGTTINP1990Stop suspends the processnumber reused
x86, ARM and most Linux
21
Alpha and SPARC
21
MIPS
26
PA-RISC
27
macOS
21

Terminal input for background process

SIGTTOUP1990Stop suspends the processnumber reused
x86, ARM and most Linux
22
Alpha and SPARC
22
MIPS
27
PA-RISC
28
macOS
22

Terminal output for background process

SIGUNUSEDCore ends it and writes a core dumpnumber reused
x86, ARM and most Linux
31
Alpha and SPARC
absent
MIPS
absent
PA-RISC
31
macOS
absent

Synonymous with SIGSYS

SIGURGP2001Ign ignored unless you handle itnumber reused
x86, ARM and most Linux
23
Alpha and SPARC
16
MIPS
21
PA-RISC
29
macOS
16

Urgent condition on socket (4.2BSD)

SIGUSR1P1990Term ends the processnumber reused
x86, ARM and most Linux
10
Alpha and SPARC
30
MIPS
16
PA-RISC
16
macOS
30

User-defined signal 1

SIGUSR2P1990Term ends the processnumber reused
x86, ARM and most Linux
12
Alpha and SPARC
31
MIPS
17
PA-RISC
17
macOS
31

User-defined signal 2

SIGVTALRMP2001Term ends the processnumber reused
x86, ARM and most Linux
26
Alpha and SPARC
26
MIPS
28
PA-RISC
20
macOS
26

Virtual alarm clock (4.2BSD)

SIGWINCHnumber reused
x86, ARM and most Linux
28
Alpha and SPARC
28
MIPS
20
PA-RISC
23
macOS
28
SIGXCPUP2001Core ends it and writes a core dumpnumber reused
x86, ARM and most Linux
24
Alpha and SPARC
24
MIPS
30
PA-RISC
12
macOS
24

CPU time limit exceeded (4.2BSD);

SIGXFSZP2001Core ends it and writes a core dumpnumber reused
x86, ARM and most Linux
25
Alpha and SPARC
25
MIPS
31
PA-RISC
30
macOS
25

File size limit exceeded (4.2BSD);

Numbers from the Linux signal(7) manual and from Apple's own header, read on the date shown. 2026-08-03

Also available in: Español · Português · Français · العربية

Linux signal numbers

Every signal's number on five platforms, the reverse lookup for a bare number, and the reason the numbers disagree at all.

What are signal numbers?

A signal is how a Unix system interrupts a running process: to ask it to stop, to tell it a child has exited, to report that it touched memory it should not have. Each one has a name like SIGTERM and a small integer, and kill sends one by either. The names are fixed by POSIX. The numbers are not.

That is the whole difficulty. POSIX standardises which signals exist and what they mean, and leaves the numbering to the implementation — so the table below has five columns, one per platform, and a great many rows where they disagree.

This page carries all 39 signals from the Linux manual and Apple's own header, with the number each platform assigns, whether POSIX standardises it, and what the default action does if you do not handle it. Above the table is the control that matters most: type a bare number and it tells you what that number means everywhere.

How to use it

  1. Start with the number, if that is what you have. Type it into the lookup and you get the signal it names on each platform, and a warning if those disagree. That is the direction a log line or a shell exit status leaves you in.
  2. Search by name, number or description. SIGKILL, kill, 9 and pipe all work, and an exact name comes first rather than being buried under everything that merely contains those letters.
  3. Read the whole row. The default action tells you what happens if your program ignores the signal, and absent means the signal does not exist there at all — a different fact from having a different number.

Why the numbers disagree, and why it is not random

The famous example is SIGUSR1. It is 10 on x86 and ARM, 30 on Alpha and SPARC, and 16 on MIPS and PA-RISC — three different numbers for one name, and all of them Linux. The divergence is not between operating systems, it is between architectures of the same one.

Stated that way it sounds like a nuisance. Stated the other way round it is a hazard: the same number means different signals. Ten is SIGUSR1 on x86 and SIGBUS on almost everything else, so a script or a piece of code that hard-codes 10 does not fail loudly when it runs somewhere unexpected. It sends a bus error to a process that was expecting a user-defined signal, and the process dies in a way nobody wrote a handler for.

The reassuring part is that the disagreement has a shape. Of the 31 signals that both the Linux manual and Apple's header define, macOS agrees with the Alpha and SPARC column on every single one, and with x86 on only 19. macOS and those architectures descend from BSD; Linux on x86 followed the System V numbering instead. So there are really two families here, and one column of the Linux table is the BSD column wearing a different label.

A handful of numbers are the same everywhere, which is why they are the ones people remember: 1 is always SIGHUP, 2 always SIGINT, 9 always SIGKILL, 15 always SIGTERM. Those four are safe to hard-code. Almost nothing else is.

Honest limits

Five platforms is not every platform. The Linux manual documents four architecture groupings and Apple documents macOS; the other BSDs, Solaris, AIX and the rest have their own headers and are not shown here. Since the whole point of the page is that numbers vary, treat an absence as unknown rather than as agreement — the safe conclusion from this table is always to use the name.

The table also stops before real-time signals. Those run from SIGRTMIN to SIGRTMAX, they have no individual names, and SIGRTMIN itself is not a constant — the C library claims some of the low ones for its own use, so the value differs between systems and even between library versions. A number in that range cannot be looked up in any table, which is a stronger version of the same warning.

And signal numbers are not exit codes, though they meet there. A shell reports a process killed by signal N as exit status 128 plus N, so an exit status of 137 means signal 9 on a platform where 9 is SIGKILL. That arithmetic is the shell's convention rather than part of the signal, and it inherits the same portability problem.

The data is read from the Linux signal(7) manual page and from Apple's xnu header rather than from another table, and the date it was read is printed under the list.

Why is it free?

Because it costs nothing to run. The table is part of the page and the lookup happens in your browser; nothing is uploaded and no server sees what you searched for.

The script that reads both sources is committed alongside the data it produces, and the tests assert the numbers and the family-tree measurement by name, so a bad row fails the build rather than reaching the page.