有没有办法通过信号发送一个值

Is there any way to send a value through signal

我正在编写一个包含 2 个进程的程序,parent 进程分叉生成一个 child 进程。我的问题是我想以最简单的方式将值从 parent 发送到 child。我可以用信号或任何其他 IPC 来做吗(最简单)。谢谢大家!!!

数据可以sent/received带有信号- 至少在支持 sigqueue()sigaction() 以及 SA_SIGINFO 的系统上。 接收流程示例:

#include <signal.h>
#include <string.h>

void usr1(int sig, siginfo_t *sip, void *ptr)
{
    printf("sival_int %d\n", sip->si_value.sival_int);
}

. . .

    struct sigaction sa;

    memset(&sa, 0, sizeof (sa));
    sa.sa_sigaction = usr1;
    sa.sa_flags = SA_SIGINFO;
    sigaction(SIGUSR1, &sa, NULL);

发送过程示例:

#include <signal.h>

. . .

    union sigval sv;

    sv.sival_int = 43210;
    sigqueue(target_pid, SIGUSR1, sv);

另见 union sigval
手册页:sigaction, sigqueue