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

关于IO 映射的一个问题,请各位指点一下,谢谢!

    来源: 互联网  发布时间:2016-05-30

    本文导语:  我按照UNIX高级编程上关于IO映射那一节写了一个类似的程序,先把一个文件(文件1)映射到内存,再创建一个新文件(文件2),并且也映射进来,然后在他们之间做一些复制的操作。  可是我创建文件2的时候,想把...

我按照UNIX高级编程上关于IO映射那一节写了一个类似的程序,先把一个文件(文件1)映射到内存,再创建一个新文件(文件2),并且也映射进来,然后在他们之间做一些复制的操作。 
可是我创建文件2的时候,想把它的大小设置成和文件1一样大,采用的方法是调用lseek,把偏移量设置成文件1的长度减1,然后在那个位置写一个字节,问题就出在这里,当我write的时候,系统报错:segmentation fault,我找了很久的原因,可还是没发现错在哪?这个应该是很简单的错误弄的我茶饭不思,望各位高手为小弟解答一下问题所在!感激不禁!! 

代码如下: 

#include  
#include  
#include  
#include  
#include  
#include  
#include  
#define FILE_MODE (S_IRUSR|S_IWUSR|S_IROTH|S_IWOTH) 

int main(){ 
    int fd_in,fd_out; 
    struct stat statbuf; 
    char *p_in,*tmp_in,*p_out,*tmp_out; 
    fd_in=open("/share/in.xml",O_RDONLY); 
    fstat(fd_in,&statbuf); 
    p_in=(char*)mmap(0,statbuf.st_size,PROT_READ,MAP_SHARED,fd_in,0); 
    fd_out=open("/share/out.xml",O_RDWR|O_CREAT,FILE_MODE); 
    lseek(fd_out,statbuf.st_size-1,SEEK_SET); 
    write(fd_out,"",1)  *************************************************************执行到write()这里就出错了:segmentation fault  , 
    p_out=(char*)mmap(0,statbuf.st_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd_out,0); 

    。。。。。。。。。。。。。。以下略 

万望各位指教问题出在何处!!谢谢

|
lseek到文件本身不存在的位置了吧.
你新建一个空文件,应该先扩展文件大小先.
这里只看到你新建,然后就lseek了.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c++类库Boost::bimap(双向映射)介绍及使用实例
  • Linux内存映射 物理地址映射到虚拟地址
  • 将ResultSet结果集中的记录映射到Map对象中
  • 如何解决端口映射只能映射一台服务器的问题?
  • Docker 端口映射,端口绑定操作介绍
  • [端口映射-在线等-100分]新安装的redhat as4 ,怎样做端口映射?
  • HTML 5 <area> 标签-定义图像映射中的区域
  • 知道为什么的帮个忙解释一下:1、weblogic里面的web.xml和tomcat里面的web.xml配置为什么不同?2,是不是一定要指定servlet-mapping映射一个别名,并用那个映射名访问,而用原来那个名不行???
  • python内置映射类型(mapping type):dict哈希字典遍历方式及其它用法举例
  • 网络映射
  • mmap文件映射的问题
  • XML与Java类相映射 Xmappr
  • 在linux下能实现多端口映射吗?
  • mmap如何分段内存映射
  • O/R映射框架 Mr.Persister
  • 内存映射
  • 映射区可执行PROT_EXEC好像是用不了啊??
  • 如何在其他盘中实现对这个盘中所有文件和文件的8映射
  • 对象/关系映射持久层框架 Ebean
  • I/O端口寄存器地址在驱动中到底要被映射几次???
  • 内存映射文件问题疑惑:


  • 站内导航:


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

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

    浙ICP备11055608号-3