南方Linux论坛   首页 | 行业 | 下载 | Blog | 桌面应用 | 数据库 | 电子商务 | 文摘 | 网络服务 | 开源 | 系统管理 | 内核代码 | 教程

返回   南方Linux论坛 > Linux发行版分类讨论区 > SuSE专题
注册账号 Blog 论坛帮助 会员列表 日历事件 搜索 今日新帖 标记讨论区已读

发表新主题 回复
 
主题工具 显示模式
旧 2006-08-01, 10:21 PM   #1
lZHB 帅哥
级别:0 | 在线时长:0小时 | 升级还需:5小时
初级会员
 
注册日期: 2006-08-01
帖子: 4
精华: 0
现金: 10 金币
资产: 10 金币
声望: 10 lZHB 正向着好的方向发展
默认 Novell SUSE 中国技术支持中心为大家提供免费服务

欢迎大家对LINUX提问
lZHB 当前离线  
回复时引用此帖
旧 2007-05-11, 10:21 PM   #2
widify
级别:0 | 在线时长:0小时 | 升级还需:5小时
初级会员
 
注册日期: 2007-05-11
帖子: 1
精华: 0
现金: 2 金币
资产: 2 金币
声望: 10 widify 正向着好的方向发展
默认 回复: Novell SUSE 中国技术支持中心为大家提供免费服务

我正好有一个问题,困扰了好久了,借这个机会问一下:
在SUSE 9下面用fopen打开一个文件,然后用fclose关闭文件,将缓冲区的内容写入文件时,调用fclose时函数一直没有返回,导致线程一直挂在那里,超过30秒,说明一下的是同时有三个线程在往这个文件里面写东东,不过打开文件时都有加锁,其它线程检测试到这个线程一直没有运行,主动将程序core dump了。不知道各位编程高手有没有遇到过这样的问题或者说系统管理的高手说系统需要打什么补丁什么的,只要有一点线索的都请相告一下,谢谢了。
大概的函数是这个样子的:
f()
{
lock()
File * LogFile = fopen(...//文件路径名);
//往文件里面写东东
 fclose(LogFile);
unlock();
}

因为有多个线程往同一个文件里面写东东,所以有lock()函数,unlock()函数用来解锁。
这个函数在NT和AIX下运行得很好,移植到SUSE下面后,随机出现fclose()无法返回的情况,导致一个线程在往文件里面写东东,另外有两个线程在等lock()的临界资源,也一直挂在那里,其它的线程检测到写文件的线程有30秒没有运行,于是将程序给core出来了。
widify 当前离线  
回复时引用此帖
发表新主题 回复


当前查看此主题的会员: 1 (0 位会员和 1 位游客)
 
主题工具
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

论坛启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


所有时间均为北京时间。现在的时间是 08:05 AM


vBulletin 3.6.8 Powered by 南方Linux联盟
版权所有 ©2004 - 2009, bbs.linuxunion.net