有没有办法通过信号发送值
Posted
技术标签:
【中文标题】有没有办法通过信号发送值【英文标题】:Is there any way to send a value through signal 【发布时间】:2020-12-12 14:12:30 【问题描述】:我正在编写一个有 2 个进程的程序,父进程分叉以生成一个子进程。我的问题是我想以最简单的方式将值从父母发送给孩子。我可以用信号或任何其他 IPC(最简单)来做到这一点。谢谢大家!!!
【问题讨论】:
【参考方案1】:可以通过信号发送/接收数据 -
至少在支持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
【讨论】:
对我来说非常有用的答案,谢谢!以上是关于有没有办法通过信号发送值的主要内容,如果未能解决你的问题,请参考以下文章