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

程序传参问题,大家指教,初学。谢谢了。

    来源: 互联网  发布时间:2016-04-26

    本文导语:  小弟写的一段程序,要实现把一个给定的结构体用共享内存方式实现接口,函数接口共享内存的名字,及要设置共享内存的结构体,返回指向共享内存的指针。 就是给定共享内存的名字和结构体,返回指向共享内存...

小弟写的一段程序,要实现把一个给定的结构体用共享内存方式实现接口,函数接口共享内存的名字,及要设置共享内存的结构体,返回指向共享内存的指针。

就是给定共享内存的名字和结构体,返回指向共享内存的指针。

但是发现一个问题就是我下面的实现在mmap前的强制类型转换时是不行的,请问这个要怎么实现?

void creatsmm(char * sname, void **p)
{
    int fd;
    int i;

    fd = open(sname,O_RDWR|O_CREAT,00777);
    lseek(fd,sizeof(*p),SEEK_SET);
    write(fd,"",1);

    *p = ((*p)*)mmap(NULL,sizeof(*p),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
    close(fd);
    return *p;

}

|
#include 
#include 
#include 
#include 
#include 
#include 
void* CreateShm(const char* name,int size)
{
    int fd,i;

    fd = open(name,O_RDWR|O_CREAT,00777);
    if(fda=5;pc->b=8;
    c = *pc;
    int *ipc = (int*)pc;
    *(ipc+4)=99;
    printf("%dt%dt%dn",c.a,c.b,*(ipc+4));
    munmap(pc, sizeof(c));
    return 0;
}

可以看出,用内存映射出来的内存,一般是1024/4049之类的边界对其的,可以用ipc+1023来确认
创建函数还可以加上内存映射标志。

    
    

|
void* creatsmm(char * sname, int size) 
参数:sname为名称,size为结构体大小,返回p指向起始地址。


|
跟4楼的函数原型差不多的实现, 通常都是这么实现的。
按照一楼地方法是不行地,sizeof(*p)是指针的大小。

其实这个跟 向函数的形参传一个一维数组一样的道理,形参获得的只是个指针,他不知道指向的具体类型地。

|
mmap()内指定结构也没有什么意义,它还是先用sizeof()计算大小,然后按照大小分配
所以直接指定要分配的共享内存大小,后面转换

    
 
 

您可能感兴趣的文章:

  • 我用的是putty软件SSH到linux上,但启动程序后关闭终端程序就退出了,在线等,请高人指教!
  • 一个为似企业QQ的软件(含服务器程序和客户端程序)的Java源码,可以卖多少钱?请指教
  • 高手指教:怎样在LINUX下运行WIN98程序?
  • 操作系统 iis7站长之家
  • 在运行一个应用程序时出的问题,请指教,急!!
  • 用Qt3.1.4编写的程序,如何加入动态库呀?诚恳指教!!
  • 关于jb7的问题。如何让程序中的swing组件在design中可见?请高手指教!
  • 用Qt3.1.4编写的程序,如何加入自己编写的另外一个动态库呀?诚恳指教!!
  • 高手指教——在没有卸载程序的情况下,如何卸载已安装的软件,象Windows那样?
  • 在命令行下怎样单步跟踪一个java程序的运行?请各位指教!
  • 小弟初入java这一行,很想看看已经编好的源程序,愿意指教的请发送到samgundam@sina.com!谢谢
  • 请问重新编译LINUX内核是否能将没有用的外设的驱动程序删除并减少内核占有内存的资源?请好心人仕指教!
  • 各位大侠,我的第一个j2ee程序竟然有误。请指教:::
  • 各位大虾!求救!!有一个关于调用输入类的程序,有一个错误,请指教!!
  • 驱动程序框架问题,大家指教。
  • 我用记事本写了一个小程序是带窗口的,源程序如下,我该怎么运行:是java FrameTest?还是javaw FrameTest?请指教一下!!!
  • 我想开发一个基于BS结构的办公自动化程序,不知道用哪种语言合适,请大虾指教!
  • 一个JAVASCRIPT调用CGI程序的问题。绝对有点难,请大家指教,在先等待!!!急啊!!!
  • redhat 9.0 下驱动程序开发是否需要重新编译内核?求高手指教!
  • 我有个程序是查找数据的(做成一个列表),但不知道为什么会core dump,请各位指教一下。谢谢!
  • 初学linux程序设计,有个程序找不到思路,跪求大神指点!
  • 初学JAVA,用哪个软件来调试和编译程序?
  • 初学linux下的c有苦于找不到什么程序实例学习
  • 我想用Linux学程序,不知道哪个发行版比较适合初学者?
  • 初学unix,想用motif来写unix下的界面程序?哪里有motif的中文资料呀?
  • 初学者提问:可以在Linux上运行exe程序吗?
  • 初学者——问题非常简单——程序不能运行
  • linux初学者一简单问题!在线送分!linux设备驱动程序一书的第一个程序.
  • 谁能给一段解微分的程序(初学者求救)
  • 初学者问题:怎样安装网卡的驱动程序
  • 初学linux程序设计的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 哪里可以下载MsSqlserver2000的JDBC程序包,谢谢!谢谢!一定给分。
  • 让我看一眼sjcd的程序设计题,小弟把全部的600分双手奉上。谢谢。谢谢。
  • 我想用jsp做个发送邮件的程序,请问需要什么服务器?怎样配置?最好还能提供一个简单的测试程序!谢谢!
  • linux驱动程序是怎样通过内核和应用程序通信,还有是怎样和硬件通信,跪求求解,谢谢高手留言。
  • 怎么在HP11.00平台启动时运行一个程序,就是让该程序随系统启动,麻烦各位教我,谢谢了!
  • 问下arm下如何实现memory模式的cf的驱动,程序框架怎么搭!有源程序参考下更好!分数不多全部送上,谢谢了!
  • 程序抓图提问,谢谢!
  • 请问怎么在shell中调用java程序,谢谢各位了
  • 在程序中何处用getParent()得到父窗口。详情见内。谢谢。
  • 菜鸟问:怎么把java程序作成.exe文件??谢谢
  • 请问如何在一个JSP页面调用一个exe程序呢?谢谢!
  • 求模糊查询的程序,谢谢
  • 请大家提供几个下载Jsp源程序的网址,谢谢!
  • 求kylix3的破解程序,谢谢
  • boycer 谢谢你的 Java帮助程序, 来取分
  • 请问unix终端的光条式菜单程序是用什么语言开发的?谢谢
  • linux下用c语言写的程序,其中可以使用STL模板吗?先谢谢各位
  • ?LINUX下怎么把C++程序反编译???谢谢
  • 求一个ip地址池分配地址的小程序。谢谢了
  • 菜鸟请问(Red Hat Linux)里面的用于开发窗口程序的头文件是什么,谢谢
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • windows server2008上PowerBuilder程序系统错误解决方法
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 程序员的八种级别,你属于哪一级?
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径
  • 在docker容器中通过apt-get安装新的程序


  • 站内导航:


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

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

    浙ICP备11055608号-3