繁体   English   中英

在Linux中使用Signal发送信息

[英]Sending information with a Signal in Linux

当从一个进程向另一个进程发送信号时,我还想发送long类型的值。 那可能吗? 我正在使用SIGUSR1。

当然可以,但你必须用sigqueue(2)而不是kill(2)发送它。 你可以发送一个intsival_ptr

union sigval {
    int   sival_int;
    void *sival_ptr;
};

建立处理程序

struct sigaction sa;
sigemptyset(&sa.sa_mask);
sa.sa_sigaction = handler;
sa.sa_flags = SA_SIGINFO; /* Important. */

sigaction(SIGUSR1, &sa, NULL);

使用SA_SIGINFO建立的信号处理程序

static void
handler(int sig, siginfo_t *si, void *ucontext)
{
    si->si_value; /* This is what you're looking for. */
}

发送整数

union sigval sv;
sv.sival_int = 42;

sigqueue(pid, SIGUSR1, sv);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM