c - 如何使用信号和共享内存在父进程和子进程之间进行通信?
问题描述
我正在尝试编写一个程序来将数据从用户输入到父母。然后将该数据发送给孩子。最后,孩子对数据执行一些操作并将其发送回打印它的父母。数据应仅存储在共享内存中,并使用信号进行通信。
#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;
}
解决方案
推荐阅读
- reactjs - Jest 使用 create-react-app 手动模拟:如何在测试中使用模拟值
- javascript - 如何在特定 laravel 刀片视图上扩展 vuejs 应用程序实例
- javascript - jQuery从包含的脚本中最近的按钮数据标签中获取
- rxjs - 当内部的任何一个发出时,发出 combine observable
- iot - 解码 lorawan 数据 gps 追踪器 Moko LW001-BG Thethings network
- php - PHP - 如何获取数组/链表中的所有可能性序列
- json - 如何从 JMeter 的 json 响应中的长 html 内容中提取特定的 *token* 值
- microsoft-graph-api - 无法从 Microsoft graph 获取批量管理器数据
- javascript - 如何更改javascript中每个按键的字体粗细
- java - 从Java中具有不同数据类型的单个方法返回多个变量