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

××调用fopen时出错?××

    来源: 互联网  发布时间:2015-12-05

    本文导语:  请问:调用fopen时程序出core是可能是什么原因?gdb信息如下,可以看到fopen中内存分配出错,但为什么fopen不返回错误呢?谢谢! gdb信息如下: #0  0x4207a3a9 in chunk_alloc () from /lib/i686/libc.so.6 #1  0x4207a058 in malloc ...

请问:调用fopen时程序出core是可能是什么原因?gdb信息如下,可以看到fopen中内存分配出错,但为什么fopen不返回错误呢?谢谢!

gdb信息如下:
#0  0x4207a3a9 in chunk_alloc () from /lib/i686/libc.so.6
#1  0x4207a058 in malloc () from /lib/i686/libc.so.6
#2  0x4206bb71 in fopen@@GLIBC_2.1 () from /lib/i686/libc.so.6
#3  0x0804dbbb in testfile () at adindex.cpp:1647
#4  0x0804e4c9 in save_index (path=0x80afe54 "./data/adindex/incadindex/0/") at adindex.cpp:703
#5  0x0804fa42 in build_inc_index () at adindex_inc.cpp:500
#6  0x0804b330 in build_normal_index () at adindex.cpp:181
#7  0x0804b0ba in main (argc=1, argv=0xbffff9f4) at adindex.cpp:79
#8  0x42017499 in __libc_start_main () from /lib/i686/libc.so.6

|
像这种内存出现down的,一般都是因为定义的变量没有初始化,长度不符,资源没有释放等,如打开文件的指针没有close,请仔细查看

|
其实我更想看你贴出的源代码

|
你fopen的时候有其他进程存在吗?

man page说存在以下原因:
ERRORS
The fopen() function will fail if: 
[EACCES]
Search permission is denied on a component of the path prefix, or the file exists and the permissions specified by mode are denied, or the file does not exist and write permission is denied for the parent directory of the file to be created. 
[EINTR]
A signal was caught during fopen(). 
[EISDIR]
The named file is a directory and mode requires write access. 
[ELOOP]
Too many symbolic links were encountered in resolving path. 
[EMFILE]
{OPEN_MAX} file descriptors are currently open in the calling process. 
[ENAMETOOLONG]
The length of the filename exceeds {PATH_MAX} or a pathname component is longer than {NAME_MAX}. 
[ENFILE]
The maximum allowable number of files is currently open in the system. 
[ENOENT]
A component of filename does not name an existing file or filename is an empty string. 
[ENOSPC]
The directory or file system that would contain the new file cannot be expanded, the file does not exist, and it was to be created. 
[ENOTDIR]
A component of the path prefix is not a directory. 
[ENXIO]
The named file is a character special or block special file, and the device associated with this special file does not exist. 
[EOVERFLOW]
The named file is a regular file and the size of the file cannot be represented correctly in an object of type off_t. 
[EROFS]
The named file resides on a read-only file system and mode requires write access. 
The fopen() function may fail if: 

[EINVAL]
The value of the mode argument is not valid. 
[EMFILE]
{FOPEN_MAX} streams are currently open in the calling process. 
[EMFILE]
{STREAM_MAX} streams are currently open in the calling process. 
[ENAMETOOLONG]
Pathname resolution of a symbolic link produced an intermediate result whose length exceeds {PATH_MAX}. 
[ENOMEM]
Insufficient storage space is available. 
[ETXTBSY]
The file is a pure procedure (shared text) file that is being executed and mode requires write access.

但是你的症状像是在返回之前就core dump了,你是在什么地方打开文件呢?终端?还是其他的

|
你把fopen那句贴出来看看,我怀疑是你的那个(const char *)变量有问题

    
 
 

您可能感兴趣的文章:

  • jsp 调用SERVLET的POST方法时出错
  • shell 调用java程序出错
  • jsp调用javabean出错!
  • 紧急提问,我最简单地调用一个.so库,为什么会出错
  • execl函数调用出错?????
  • 《Unix环境高级编程》的程序14-7中的popen函数调用myuclc出错
  • linux中使用codeblocks编译C++程序debug可以执行和Release调用出错
  • 链接问题,调用动态库中函数时出错
  • 在JSP中调用Bean函数出错的问题
  • sco上调用syslog()编译出错???
  • 如何使得调用unlink函数出错,文件存在的情况下。
  • 64位机调用gcc -m32时出错
  • 调用函数出错,请各位指点,谢谢!!!!!
  • jsp调用JavaBean,class文件存放于..MyWebWEB-INFclassespacket下,但还出错
  • 在jspInit()中调用内建对象application出错???
  • 简单问题:jsp通过bean调用ejb时出错
  • jsp调用bean中方法出错,高高分
  • 谁能告诉我,怎么调试jsp程序呀!我在jsp中调用java,但是Tomcat这家伙只会给我报jsp文件出错。这可怎么办呀?
  • 调用一个自己写的利用了STL的共享库,在link时出错????
  • c++ mk文件出错Jni调用产生java.lang.UnsatisfiedLinkError错误解决方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在Python中使用SWIG调用C和C++程序
  • Linux添加系统调用时如何调用C语言库函数
  • sessionbean调用entitybean的时候还需要像Client一样远程调用对象吗??
  • system()调用 与 ioctl()调用
  • linux中为什么系统调用比普通函数调用更费时间?
  • 如何在LINUX下用一个普通文件调用一个自己编写的调用系统的文件
  • 可不可以用java调用其他语言的编译结果?(好象asp调用com那样)
  • 为什么我的BEAN 在WIN2000中调用没有问题,但在LINUX中调用有问题
  • 为什么守护进程调用调用getlogin会失败呢?
  • 用RMI进行远程对象调用的时候,可不可以实现多个调用远程对象的并发操作
  • 关于jsp调用javabean的问题!调用是成功了,但是有小问题!
  • ioctl中能不能调用generic_file_read呀?我一调用就不动了
  • LINUX下系统调用是不能中断的,要怎么改造成可以中断系统调用?
  • 请问用javaScript或vbScript可否调用页面上Applet的public函数?如何调用?
  • 请问在jsp中调用外部的类,与jsp调用javabean有何区别??
  • 调用数学函数,需要调用哪个函数库?
  • 调用system(“命令”)和函数调用之间有什么不同?效率?
  • 请问如何在Java中调用一个VB所写的DLL?如何调用这个Dll的方法?如何取得和设置这个Dll的属性值?谢谢!
  • 脚本1调用脚本2,脚本2必须输入回车,如何在调用过程中自动输入回车
  • 请问linux中的系统调用号是如何跟系统调用表对应起来的
  • 我的APPLET在Jbuilder5中,可以调用EJB对象,但是移植到网页上却不能调用EJB对象!是何缘故,值得研究!


  • 站内导航:


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

    ©2012-2021,