Note that using the sigqueue () system call, you can pass an extra piece of data along with your signal. Here is a short quote from "man 2 sigqueue":
The value argument is used to indicate an accompanying data element (either an integer or a pointer value) to be sent with a signal, and has the following type:
union sigval { int sival_int; void *sival_ptr; };
This is a very convenient way to transfer a small bit of information between two processes. I agree with the user above - use SIGUSR1 or SIGUSR2 and a good signal, and you can transfer whatever you want.
You can also pass a pointer to an object in shared memory via sival_ptr and pass a larger object this way.
slacy
source share