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

什么情况下,文件打开(open)成功,但映射(mmap)不成功?

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

    本文导语:  代码大概这样: int fd; void *start; struct stat sb; fd = open(file, O_RDONLY); fstat(fd, &sb); start = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0); if( NULL == start)  {     printf("nNULL时文件名是:%sn", file);     printf("NULL时文...

代码大概这样:

int fd;
void *start;
struct stat sb;

fd = open(file, O_RDONLY);
fstat(fd, &sb);
start = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0);

if( NULL == start) 
{
    printf("nNULL时文件名是:%sn", file);
    printf("NULL时文件内容:%sn", start);
    printf("文件描述符是:%dnn", fd);
}

经常有的打印结果是:
NULL时文件名是:xxx
NULL时文件内容:(null)
文件描述符是:4

这是怎么回事?

|
这个file是什么文件 ?  普通文件,设备文件?

如果是设备文件,那要在驱动里面实现mmap方法。

|
#include
#include
#include
#include
#include
main()
{
int fd;
void *start;
struct stat sb;
fd=open("/etc/passwd",O_RDONLY); /*打开/etc/passwd*/
fstat(fd,&sb); /*取得文件大小*/
start=mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,fd,0);
if(start= = MAP_FAILED) /*判断是否映射成功*/
return;
printf("%s",start);
munmap(start,sb.st_size); /*解除映射*/
closed(fd);
}

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












  • 相关文章推荐
  • Linux下如何将一个文件cut为固定的长度?在已有文件句柄的情况下。
  • linux下用c语言如何在不知道文件名的情况下读去一个目录里的所有文件?
  • find在脚本中做gzip压缩,何种情况下本身文件也存在
  • 哪个文件可查看到使用端口情况?
  • Linux/Android竞争情况下使用flock加锁后文件被毁坏
  • 没有路径的情况下创建的文件的默认路径是和程序生成可执行文件在同一个目录中是吗?。
  • 在application或applet中调用javabean如果其中一个参数是一个文件名,在bean中会对这个文件的内容做修改会出现怎么样的情况.???
  • 大家好,我在linux下的程序在操作大文件时,有时候文件会变成几T大小,不知道在什么情况下会出现这种错误,请赐教。
  • 什么情况下有必要在Makefile中生成.d文件??
  • 请问linux下如何在保留目录的情况下,删除目录中的多个文件?谢谢
  • 高手贴 在没有老软驱 的情况下 cpm 操作系统 低密度盘文件如何读?
  • 如何使得调用unlink函数出错,文件存在的情况下。
  • 那位大哥有UNIX下监控指定文件的改动情况的源码?
  • 现在我用vi时,保存文件时,提示信息是乱码,请问谁遇到过这种情况,如何解决?
  • linux下压缩文件权限保留和不保留的情况如何模拟
  • awk参数中文件名是变量的情况
  • tar.gz包里没有Makefile.in文件和configure的情况下,该如何安装呢。
  • 谁有办法在不损坏文件的情况下给linux增加磁盘空间?(100分)
  • 用Java如何在有菜单和按钮的情况下显示JPG图形文件,而菜单和按钮仍可见????
  • 我从网上下载了FreeBsd 4.8的.iso文件,不知如何在window2000存在的情况下安装?
  • C++ Vectors 成员 capacity():返回vector所能容纳的元素数量(在不重新分配内存的情况下)
  • 请问什么情况下用servlet,什么情况下用ejb,什么情况下用jsp.给出理由?
  • linux下free命令显示的内存使用情况分析
  • 如何查看分区情况和硬盘空间使用情况?
  • 求助:java实现显示linux下的cpu占用率,内存使用情况,硬盘占用情况
  • shell 函数中的用exit时,什么情况下仅仅退出函数,什么情况下退出整个shell程序?
  • tcp和udp套接字有何不同?在什么情况下用tcp什么情况下用udp????
  • 在AIX(4.3)系统上如何查看内存情况
  • SWAP分区满的问题,有同学碰到这种情况吗?
  • AIX 4.3.X中用什么命令能查看到系统内存的使用情况?
  • 如何编程查看 cpu 内存 占用情况


  • 站内导航:


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

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

    浙ICP备11055608号-3