首页 > 解决方案 > 使用C中的信号在两个进程之间进行通信

问题描述

我必须在 C 中创建一个程序,该程序将通过 SIGUSR1 在两个进程之间进行通信。该程序必须在发送和接收信号时回复。我有下面的代码,但是他只是发送一个信号,为什么接收功能不起作用?

IMG

#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");
}

标签: cprocesssignals

解决方案


推荐阅读