c - 什么会导致 fwrite 挂起?

标签 c solaris fwrite fclose

我的代码正在使用以下堆栈挂起 fwrite:

libc.so.6.1::___lll_lock_wait
libc.so.6.1::fwrite

这似乎发生在 solaris 中。

我能想到的唯一不正确的事情是我的代码可能会尝试在用于执行 fwrite 的同一个 FILE 指针上执行并行 fclose。如果发生并行关闭,是否会导致这种堆栈?

但是,我不确定并行 fclose 调用是否真的发生了?

这可能是什么问题?

最佳答案

好像有什么东西在某处爆炸了。对 FILE* 的操作通常使用内部锁来保证线程安全。您可能已经做了一些事情来在某处调用未定义的行为。例如。你已经破坏了堆,覆盖了一些重要的东西(比如文件),或者文件*已经关闭——在这种情况下,如果你继续使用它,你就不能指望任何理智的事情发生。

关于c - 什么会导致 fwrite 挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3686888/

相关文章:

C : Input interval and then out only even numbers (2, 4,6,8...)

java - Solaris : TOP command, RES mem 未关闭(java 程序)

C fwrite() 写入的字符数量加倍

c - 将数据从文件写入 C 上的结构

python - 如何在C中打印出0到255的ascii字符,通过Django显示在网页中?

c - 链接列表的冒泡排序 请帮忙

c - 如何从现有代码在 Eclipse 中创建多个子目录

c - AIX 5.3 与 Solaris 5.10 - C strcat 实现

c - 创建并执行makefile:C

c - 在 C 中使用具有相同标志的 fopen 打开文件