gpt4 book ai didi

c - 尝试将整数写入 C 中的共享内存时出现段错误(核心已转储)

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:23 26 4
gpt4 key购买 nike

我正在尝试在进程之间使用共享内存。我只是逐步实现这些功能。当我尝试向其中写入内容时,我不断遇到段错误(核心已转储)。

int* ms; // Pointer for milliseconds
int* ns; // Pointer for nanoseconds

void checkArgs(int argc, char* argv[]);
void createSharedMem();
void createSharedMem()
{
int shmid = shmget(KEY, sizeof(int)*128, IPC_CREAT |0666 );
if(shmid < 0)
printf("\n Error creating shared memory");
ms = shmat(shmid, NULL,0);
ns = shmat(shmid,NULL,0);
*ms = 0;
*ns = 0;
}


int main(int argc, char* argv[])
{

checkArgs(argc,argv);
createSharedMem();

*ms = 1;
*ns = 1;

printf("ms : %d ns : %d", *ms,*ns);

}

最佳答案

我发现了问题。我没有使用 #define KEY 定义键并在 shmget() 中使用它,而是使用 key_t 创建键变量。这解决了“无效参数”的问题

这是更新后的代码:

void createSharedMem()
{
key_t key;
int shmid = shmget(key, 4096, 0666 | IPC_CREAT);
if(shmid < 0)
perror("\n Error creating shared memory");
ms = shmat(shmid, NULL,0);
ns = shmat(shmid,NULL,0);
*ms =0
*ns=0;
printf("%d",*ms);
}

关于c - 尝试将整数写入 C 中的共享内存时出现段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54897357/

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