c - 使用C中的信号在两个进程之间进行通信
问题描述
我必须在 C 中创建一个程序,该程序将通过 SIGUSR1 在两个进程之间进行通信。该程序必须在发送和接收信号时回复。我有下面的代码,但是他只是发送一个信号,为什么接收功能不起作用?
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
void send_SIGUSR1();
void main()
{
int pid;
if ((pid = fork()) < 0) {
perror("Fork");
exit(1);
}
if (pid == 0) {
signal(SIGUSR1, send_SIGUSR1());
}
else
{
printf("\nPARENT: sending SIGUSR1\n\n");
kill(pid, SIGUSR1);
}
}
void send_SIGUSR1()
{
signal(SIGUSR1, send_SIGUSR1);
printf("CHILD: I have received a SIGUSR1\n");
}
解决方案
推荐阅读
- android - 启用远程js调试时React Native应用程序没有网络连接
- angular - Mat datepicker 仅格式化多个选择器之一
- php - 如何将输入限制为两倍?
- vb.net - 我需要帮助将此 C# Linq 查询转换为 VB.net。我不太了解某些方面
- flutter - 为什么 SearchDelegate 的 buildSuggestion 方法不起作用?
- java - 使用哈希映射(键/值对)处理帖子表单的成语
- artifactory - Artifactory OSS版无维护操作
- angular - 当我在 Angular 中导航到其路由的子子项时,如何保持 mat-tab 处于活动状态?
- spring - Spring 工具套件:非空属性引用空值或瞬态值
- asp.net-mvc - 在 MVC/.Net Core 中使用“返回确定(等待结果)”是否可以?