首页 > 解决方案 > 如何使用信号和共享内存在父进程和子进程之间进行通信?

问题描述

我正在尝试编写一个程序来将数据从用户输入到父母。然后将该数据发送给孩子。最后,孩子对数据执行一些操作并将其发送回打印它的父母。数据应仅存储在共享内存中,并使用信号进行通信。

#include<stdio.h>
#include<signal.h>
#include<unistd.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#define SHM_KEY 0x1234

void sigfun(int sig) //signal handler
{
 printf("You have presses Ctrl-C, please press again to exit\n");
 signal(SIGINT, SIG_DFL);
}
int main()
{
  int shmid;
  char * shmp;
  shmid=shmget(SHM_KEY, 100, 0644|IPC_CREAT);
  if(shmid==-1)
  {
  perror("Shared Memory error: ");
  exit(-1);
  }
  printf("100 bytes of shared memory segment created and its ID is: %d\n",shmid);
  shmp=shmat(shmid,NULL,0);
  if(shmp==NULL)
  {
  perror("shmat() error: ");
  exit(-1);
  }
  printf("\nSegment attached to process:%d and its address is:%p\n",getpid(),shmp);

 signal(SIGINT, sigfun);
 while (1)
 {
 printf("Hello world, ......\n");
 sleep(1);
 }
 return 0;
}

标签: coperating-systemsignalsshared-memory

解决方案


推荐阅读