有没有办法通过信号发送一个值
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);
我正在编写一个包含 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);