免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10037 | 回复: 8
打印 上一主题 下一主题

[C] [求助]c语言中如何判断写文件是否结束,文件是否关闭?谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-05 16:43 |只看该作者 |倒序浏览
AIX下的c语言编程,从socket接口取数据,然后写到文件中。
我遇到的问题是,如果数据量很大,写文件还没结束,前台交易就报错了,现在我在其中加了sleep函数,可这样一来,不管数据量是不是大,交易速度都有影响,我想请教各位能否有一个函数能判断指定文件是否在被写入还是已经关闭,这样我可以做个循环,如果文件已经关闭,就可以不用sleep那么久了。
谢谢!!

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2007-02-05 16:49 |只看该作者
你用的是标准I/O写文件?

论坛徽章:
0
3 [报告]
发表于 2007-02-05 17:11 |只看该作者
我是用fprintf写文件的

论坛徽章:
0
4 [报告]
发表于 2007-02-05 17:31 |只看该作者
我觉得很难有简单的方法判断文件是否已被关闭。 我自己以前的一个做法,仅供参考
用stat去看st_mtime ,跟当前时间进行比较,如果大于一个数值(如2秒),则认为文件写已结束。
这个方法不是很精确,请小心使用。

论坛徽章:
0
5 [报告]
发表于 2007-02-06 08:38 |只看该作者
好的,多谢,我试试看,用这个方法

论坛徽章:
0
6 [报告]
发表于 2007-02-06 15:52 |只看该作者
好像3楼的方法不适用于我的情况啊......
有没有甚么函数可以得到文件的开关状态呢?谢谢

论坛徽章:
0
7 [报告]
发表于 2007-02-06 18:40 |只看该作者
我也想知道

论坛徽章:
0
8 [报告]
发表于 2007-02-06 22:13 |只看该作者
个人觉得应该采用同步机制,类似生产者-消费者的问题

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
9 [报告]
发表于 2007-02-06 22:23 |只看该作者
如果一次写入数据太大,可试如下算法:
写之前用互斥写入打开文件。如果打开失败,则说明前次数据还没写完。
如果打开成功,则将文件指针调到合适位置开始写入数据。数据写完后,关闭文件。
不过似乎楼主的问题是在于AIX的C标准库实现上。按理说fprintf应该是同步函数。
标准C函数库不支持异步函数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP