在C linux中服务器和客户端之间的共享内存
Shared Memory in C linux between server and Client
我想在客户端-服务器程序之间共享变量。我有服务器和2个客户端。我用shmget做了shm,但我不能在客户端中处理变量
服务器:
if ((nMemID=shmget(kluc, sizeof(udaje[2]), IPC_CREAT|0777))==-1)
{
perror("Nepodarilo sa vytvorit segment zdielanej pamaten");
exit(-100);
}
if ((shared =(udaje *)shmat(nMemID, NULL, 0))==NULL )
{
fprintf(stderr,"Nepodarilo sa pripojit na rad spravn");
exit(-1);
}
shared->hlavnaNadrz=50000;
shared->nadrz1=1200;
客户:
if ((zdielanie =(udaje *)shmat(nMemID, NULL, 0))==NULL )
{
fprintf(stderr,"Nepodarilo sa pripojit na rad spravn");
exit(-1);
}
data=zdielanie->hlavnaNadrz;
读取循环中的数据:
if (shmctl(shmid, SHM_LOCK, NULL) == -1)
{
printf ("Unable to lock the shared storage: Reason %sn", strerror(errno));
break;
}
ShrStruct = (struct SharedStruct *)shm;
if (strlen(ShrStruct->Name) && ShrStruct->EmpID != 0)
{
printf("Data Received : Name --> %s || Employee ID --> %ldn", ShrStruct->Name, ShrStruct->EmpID);
memset(shm, ' ', sizeof(struct SharedStruct));
}
if (shmctl(shmid, SHM_UNLOCK, NULL) == -1)
{
printf ("Unable to unlock the shared storage: Reason %sn", strerror(errno));
break;
}
相关文章:
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- C++两个源文件之间共享的枚举的静态实例
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- Directx 12 :在两个进程之间共享图形内存
- 如何在进程之间共享大量数据而不重复?(国际刑罚委员会)
- 简单使用 std::atomic 在两个线程之间共享数据
- C++:在另外两个对象之间共享一个对象
- 在C++中的程序之间共享指针
- 拥有或在对象之间共享资源
- 在两个结构之间共享数组
- 如何在不同的CMakeList.txt之间共享变量?
- 在QT中的两个窗口之间共享websocket连接
- 在VS2017中,我们如何在项目成员之间共享编译设置
- 通过require在不同的Lua状态之间共享全局变量
- 在两个类实例之间共享向量
- OpenGL GLFW GLAD 在项目之间共享 Visual C++.
- 如何在C++中的不同翻译单元之间共享枚举的实例
- 在 c++ 中,在线程之间共享数据容器的最佳方法是什么?
- 在Emscripten和Qt之间共享OpenGL代码