This leads us to the next interesting fact: it is possible to send a data quantum—a piece of data—via signals. To see how, let's revisit the powerful struct siginfo_t we studied earlier in this chapter. To have the signal handler receive the pointer to it, recall that we use the SA_SIGINFO flag when calling sigaction(2).
Recall the fact that, within struct siginfo_t, the first three members are simple integers, the fourth member is a union of structures, there are seven of them—only one of which will get instantiated at runtime; the one that does depends on which signal is being handled!
To help us recall, here's the initial portion of struct siginfo_t:
typedef struct { int si_signo; /* Signal number. */