gpt4 book ai didi

c - 如何在 C 中修改共享内存(shmget/shmat)?

转载 作者:太空狗 更新时间:2023-10-29 15:01:07 25 4
gpt4 key购买 nike

我有一个结构:

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 信号量进行同步,我没有包含该代码。我只是想确保我正在正确访问/修改共享内存。)

最佳答案

是的,这是一种创建、访问或修改共享内存的方法。但是,您可能有同步问题,您可以使用例如Posix 信号量。先看sem_overview(7)手册页。

关于c - 如何在 C 中修改共享内存(shmget/shmat)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9967388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com