如何释放异常终止程序申请的共享内存空间
求助一下:
我编写的部分代码如下:
char* name = "/dev/shm/myshm2";
key = ftok(name,0);
if(key==-1)
perror("ftok error");
shm_id=shmget(key,4096,IPC_CREAT | IPC_EXCL);
if(shm_id==-1)
{
perror("shmget error");
return 1;
}else{
printf("shmid: %d\n", shm_id);
}
p_map=(people*)shmat(shm_id,0,0);
if( p_map == (void*)-1)
{
perror("shmat failed\n");
return 2;
}
temp='a';
printf("p_map address: %lx\n", p_map);
在p_map=(people*)shmat(shm_id,0,0);的时候出现Permission Denied,导致程序退出
在下次再次执行时, shm_id=shmget(key,4096,IPC_CREAT | IPC_EXCL);这里报File Exist错误。
请问应该如何解决这个问题,谢谢~
我编写的部分代码如下:
char* name = "/dev/shm/myshm2";
key = ftok(name,0);
if(key==-1)
perror("ftok error");
shm_id=shmget(key,4096,IPC_CREAT | IPC_EXCL);
if(shm_id==-1)
{
perror("shmget error");
return 1;
}else{
printf("shmid: %d\n", shm_id);
}
p_map=(people*)shmat(shm_id,0,0);
if( p_map == (void*)-1)
{
perror("shmat failed\n");
return 2;
}
temp='a';
printf("p_map address: %lx\n", p_map);
在p_map=(people*)shmat(shm_id,0,0);的时候出现Permission Denied,导致程序退出
在下次再次执行时, shm_id=shmget(key,4096,IPC_CREAT | IPC_EXCL);这里报File Exist错误。
请问应该如何解决这个问题,谢谢~
...全文
相关推荐
Linux共享内存的查看和删除
在使用共享内存的程序异常退出时,由于没有释放掉共享内存,在调试时会出现错误。您可以使用shell命令来查看与释放已经分配的共享内存,下面将详细说明如何进行查看和释放分配的共享内存的方法。
安装oracle'程序异常终止'问题
在安装Oracle数据库时,有时会遇到“程序异常终止”的错误提示,这可能是由于多种原因导致的。
codesys如何通过共享内存的方式跟第三方程序通信
共享内存是一种多进程间通信(IPC)的方法,允许不同进程访问同一块内存空间,从而实现实时的数据交换。
Linux内核或应用程序异常终止调试方法
2.2 程序异常终止信息分析当应用程序异常终止时,内核将输出一些异常信息,这些信息对调试非常重要。
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
使用 `finally` 语句`finally` 块无论是否有异常都会被执行,这使得它可以用来释放资源,如关闭文件等。


