c/c++开发分享如何在C中修改共享内存(shmget / shmat)?

我有一个结构:

struct sdata { int x; int y; time_t time; };

我为结构创建共享内存,如下所示:

size_t shmsize = sizeof(struct sdata); shmid = shmget(IPC_PRIVATE, shmsize, IPC_CREAT | 0666);

然后我像这样访问共享内存:

struct sdata *data = shmat(shared.shmid, (void *) 0, 0); data->time = time(NULL); // function returns the current time

我的问题非常简单。 这是访问/修改共享内存的正确方法吗? 这是最好的方法吗?

(我使用System V信号量进行同步,但我没有包含该代码。我只是想确保正确访问/修改共享内存。)

这是正确的,唯一需要注意的是您正在创建一个PRIVATE共享内存段,这意味着您必须以某种方式将shmid传输到您想要使用它的任何其他进程。

是的,这是一种创建,然后访问或修改共享内存的方法。 但是,您可能会遇到sychronizaton问题,并且您可以使用例如Posix信号量。 请参见第一个sem_overview(7)手册页。

以上就是c/c++开发分享如何在C中修改共享内存(shmget / shmat)?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

本站无法对海量内容真伪性鉴别,请勿相信本站任何号码,邮件,站外网址等信息,如有需要,请自行甄别。版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至net@163.com举报,一经查实,本站将立刻删除。
(0)
上一篇 2022年7月30日 上午10:14
下一篇 2022年7月30日 上午10:27

相关推荐

发表回复

登录后才能评论