当前位置:  技术问答>linux和unix

关于共享内存的建立和返回的大小

    来源: 互联网  发布时间:2016-07-12

    本文导语:  我写了个小程序创建共享内存.但创建完后ipcs -t显示如下: m 3777551 0x0012d687 -C---------  indbwork    neuapp 请问-C是什么意思啊? 然后程序返回的创建共享内存的大小是0呢 程序如下: #include "bank_console.h" int main(int a...

我写了个小程序创建共享内存.但创建完后ipcs -t显示如下:
m 3777551 0x0012d687 -C---------  indbwork    neuapp

请问-C是什么意思啊?

然后程序返回的创建共享内存的大小是0呢

程序如下:

#include "bank_console.h"

int main(int argc,char* argv[])
{
int i,shm_size=0;
printf("okn");
shm_size=init_system(1234567);
printf("share_mem size is %dn",shm_size);
return 0;
}

int init_system(key_t key)
{
int shm_size=0;
struct shmid_ds shm_buff;
OPER_NODE* pOper_Node;

shm_id=shmget(key,sizeof(OPER_NODE)*5,IPC_CREAT|IPC_EXCL);
if (shm_id == -1)
fprintf(stderr, "Create Share Memory Error:%sna", strerror(errno));


pOper_Node=(OPER_NODE*)shmat(shm_id,0,0);
shmctl(shm_id,IPC_STAT,&shm_buff);

return shm_buff.shm_segsz;
}

为什么返回的内存大小是0呢?而且查看共享内存显示是什么-C就更迷糊了

|

|
-C---------  表示你的共享内存区在第一次attach时被清空,并且你没有访问权限。

返回0很可能就是因为你没有访问权限。

       MODE
            (all) the facility access modes and flags. The mode consists of 11 characters that are interpreted as follows:

            The first two characters can be the following:
              R
                   If a process is waiting on a msgrcv system call.
              S
                   If a process is waiting on a msgsnd system call.
              D
                   If the associated shared memory segment has been removed. It disappears when the last process attached
                   to the segment detaches it.
              C
                   If the associated shared memory segment is to be cleared when the first attach is run.
              -
                   If the corresponding special flag is not set.
            The next nine characters are interpreted as three sets of 3 bits each. The first set refers to the owner's
            permissions; the next to permissions of others in the user group of the facility entry; and the last to all
            others. Within each set, the first character indicates permission to read, the second character indicates
            permission to write or alter the facility entry, and the last character is currently unused.

            The permissions are indicated as follows:
              r
                   If read permission is granted.
              w
                   If write permission is granted.
              a
                   If alter permission is granted.
              -
                   If the indicated permission is not granted.

    
 
 

您可能感兴趣的文章:

  • 请问 AIX 对共享内存块数和每块的大小有什么限制。
  • 共享存储的大小限制能突破吗?
  • 如何知道系统对共享内存段的大小限制
  • 请教有关samba共享名大小写的问题
  • Linux 共享内存介绍及实现代码
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 程序需要共享内存相当大,但是系统的内存有限
  • 在linux下能不能创建一个堆,然后给堆指定一块共享内存,然后各个程序用此堆来new对象来共享?
  • 请教一个关于内存分配的问题(系统和DMA共享一块物理内存空间)
  • 不同用户user之间如何访问共享内存?
  • Unix/linux下如何监测共享内存的使用情况
  • 共享内存问题,高手们请进!!!
  • 判断共享内存中是否有数据
  • 【求助】linux下什么是共享内存,怎么查看。
  • linux下共享内存的覆盖或清空
  • 进程同时访问两个大共享内存,会失败?
  • 共享内存和信号灯同步问题
  • 为什么不将数据直接写入共享内存?
  • aix 的开个共享内存的问题
  • linux下共享内存 函数shmat()的使用!
  • 请详细介绍一下共享内存机制~~
  • 初学者关于共享内存的几个问题-->
  • 文件描述符的限制?(共享内存)
  • 在语言中,什么是共享内存,怎样使用,举例?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 搭建虚拟机用的VirtualBox 怎样在主机XP虚拟机ubuntu之间建立共享
  • 怎样在共享内存里面建立二叉树,非常着急在线等,拜托各位高手了
  • NFS共享作业时, 在客户端只可以看到服务器端的共享目录,而看不到共享目录下的内容.?
  • 如何共享 共享库(*.so)中的变量?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?
  • 用samba共享其它机子访问Linux共享时,机子可以进入,但要打开共享文件夹时提示“无法访问...找不到网络名。”这是什么原因呢?
  • 局域网中的红旗2.0如何共享到win98服务器的联接共享?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?解决立即给分
  • 几个servlet共享一些数据 如我从数据库里读出一些重要的设置存入vector 让几个servlet共享 怎么做到?先谢
  • 求助linux普通用户下内存共享(系统V共享)大家进来看看啊!急!!
  • 关于中断共享的问题:ADC 与触摸屏的中断共享
  • 无法访问samba服务器中的共享文件夹
  • XP下设置与linux 本地连接的Internet共享问题
  • 我想知道LINUX如何与WIN98,WIN2000共享资源?
  • 多进程共享变量
  • 请教共享库运行时加载的问题
  • 创建共享失败。
  • 怎么我设置好vmwaretool后,还不能共享文件
  • 嵌入式linux下线程通信可以用共享文件法吗?
  • Gnome个人文件共享怎么用?
  • 当别人用FTP协议访问我的LINUX时,要显示一些共享文件夹。
  • Unix下如何在两个进程之间共享一块大内存??????


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3