c – fopen没有回来

前端之家收集整理的这篇文章主要介绍了c – fopen没有回来前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在C程序中使用’fopen’来以只读模式(r)打开文件.但在我的情况下,我发现fopen呼叫不会返回.它不返回NULL或有效指针 – 执行在fopen调用时被阻止.文件补丁是绝对正确的(我已经验证过)并且没有与权限相关的问题.任何人都可以告诉我这种行为可能是什么原因.任何形式的帮助都非常可观.有什么与 gcc或glibc有关吗?

编辑

这是示例代码

printf("%s %d\n",__FUNCTION__,__LINE__);
if ((fp = fopen(argv[1],"r")) == NULL) {
   printf("%s %d\n",__LINE__);
   return;
}
printf("%s %d\n",__LINE__);

当我运行此代码时,我只获得第一个打印(在调用fopen之前),然后该程序暂停.所以fopen没有完成它的操作.该文件是一个扩展名为“.conf”的简单配置文件,该文件可以通过vi,cat等所有其他方式打开.不应该有任何NFS相关问题.文件系统是ext3.

提前致谢,
Souvik

解决方法

原因如下:

>你已经在某个地方损坏了内存,所有的赌注都关闭了(通过valgrind运行你的程序)
>你在信号处理程序中调用代码,fopen()不是信号异步安全,所以真的发生任何事情(由于FILE *内部互斥锁导致的死锁很常见)
>该文件fifo,在这种情况下打开文件将被阻止,直到有人在另一端打开文件(读/写)>该文件位于陈旧的NFS安装上.>该文件是一个字符/块特殊文件,其语义可以打开块直到发生有趣的事情,

猜你在找的C&C++相关文章