A process can send payload data with a signal by: 1. Using pipes or sockets for inter-process communication instead of signals which are not intended for excessive data transfer. 2. Alternatively, sharing a pipe between processes and writing data to the pipe in one process before sending a signal to the other process, which then reads the data from the pipe upon receiving the signal. 3. When using sigaction(), include the SA_SIGINFO flag so the signal handler receives a siginfo_t pointer containing a union sigval that holds an int or pointer payload.