如何触发SIGUSR1和SIGUSR2?

问题描述

| 我熟悉C语言中的信号。我无法弄清信号
SIGUSR1
SIGUSR2
是什么以及如何触发它们。有人可以向我解释吗?     

解决方法

        它们是用户定义的信号,因此不会被任何特定操作触发。您可以通过编程方式显式发送它们:
#include <signal.h>

kill(pid,SIGUSR1);
其中“ 3”是接收进程的进程ID。在接收端,您可以为它们注册一个信号处理程序:
#include <signal.h>

void my_handler(int signum)
{
    if (signum == SIGUSR1)
    {
        printf(\"Received SIGUSR1!\\n\");
    }
}

signal(SIGUSR1,my_handler);
    ,        它们是应用程序开发人员使用的信号。内核永远不要将它们发送给进程。您可以使用
kill(2)
或实用程序
kill(1)
发送它们。 如果您打算使用信号进行同步,则可能需要检查实时信号(它们更多,它们已排队,可以保证它们的交货顺序等)。     ,        1号航站楼
dd if=/dev/sda of=debian.img
2号航站楼
killall -SIGUSR1 dd
回到第一航站楼
34292201+0 records in
34292200+0 records out
17557606400 bytes (18 GB) copied,1034.7 s,17.0 MB/s