How to trigger SIGUSR1 and SIGUSR2? How to trigger SIGUSR1 and SIGUSR2? c c

How to trigger SIGUSR1 and SIGUSR2?


They are user-defined signals, so they aren't triggered by any particular action. You can explicitly send them programmatically:

#include <signal.h>kill(pid, SIGUSR1);

where pid is the process id of the receiving process. At the receiving end, you can register a signal handler for them:

#include <signal.h>void my_handler(int signum){    if (signum == SIGUSR1)    {        printf("Received SIGUSR1!\n");    }}signal(SIGUSR1, my_handler);


They are signals that application developers use. The kernel shouldn't ever send these to a process. You can send them using kill(2) or using the utility kill(1).

If you intend to use signals for synchronization you might want to check real-time signals (there's more of them, they are queued, their delivery order is guaranteed etc).


terminal 1

dd if=/dev/sda of=debian.img

terminal 2

killall -SIGUSR1 dd

go back to terminal 1

34292201+0 records in34292200+0 records out17557606400 bytes (18 GB) copied, 1034.7 s, 17.0 MB/s