Как я могу общаться между родительскими и дочерними процессами, используя сигналы и разделяемую память? - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь написать программу для ввода данных от пользователя к родителю. Затем отправьте эти данные в child.Наконец, child выполняет какое-то действие с данными и отправляет их родителю, где они печатаются. Данные должны храниться только в общей памяти, а связь должна осуществляться с использованием сигналов.

#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;
}
...