免费注册 查看新帖 |

Chinaunix

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

请教,linux 多进程环境下,如何判断一个文件已经写完 [复制链接]

论坛徽章:
2
戌狗
日期:2013-11-06 17:35:36寅虎
日期:2014-10-20 23:12:29
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-01 11:48 |只看该作者 |倒序浏览
情况是这样的, 子进程在不停的生成文件 file1 file2 file3 ... , 主进程要等子进程的文件进行处理。 就知道文件名的情况如何判断这个文件已经写完了。意思就是说, 我读这个文件的时候,子进程已经fclose 这个文件了。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2012-01-01 12:53 |只看该作者
回复 1# peijue


    其實你需要的是「進程同步機制」,搜搜吧,有很多種方法。

论坛徽章:
2
戌狗
日期:2013-11-06 17:35:36寅虎
日期:2014-10-20 23:12:29
3 [报告]
发表于 2012-01-01 16:08 |只看该作者
回复 2# MMMIX


    谢谢, 不过我的需求是不能做进程同步, 想在文件状态上就能得出结论。  是否有什么办法可以做到?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2012-01-01 16:10 |只看该作者
peijue 发表于 2012-01-01 16:08
回复 2# MMMIX

不过我的需求是不能做进程同步


為什麼呀?

论坛徽章:
2
戌狗
日期:2013-11-06 17:35:36寅虎
日期:2014-10-20 23:12:29
5 [报告]
发表于 2012-01-01 16:15 |只看该作者
回复 4# MMMIX


    效率问题, 比如我调用一个程序去生成图片, 我不能要求它每次生成都加锁, 又或者我没有那个程序的源码。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2012-01-01 17:04 |只看该作者
peijue 发表于 2012-01-01 16:15
回复 4# MMMIX
 效率问题, 比如我调用一个程序去生成图片, 我不能要求它每次生成都加锁,

你總要等它把文件生成完了再處理吧,這關效率什麼事?再說了,即使你可以通過文件名(或其它類似途徑)在主進程中發現某個文件是不是沒有其它進程正在使用(lsof 可以做這個),但你準備在什麼時候做這種發現或者說探測?使用 spinning?那不是更沒效率?

又或者我没有那个程序的源码。


那你就自己再封裝一下嘛。

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
7 [报告]
发表于 2012-01-01 18:02 |只看该作者
man lsof

论坛徽章:
2
戌狗
日期:2013-11-06 17:35:36寅虎
日期:2014-10-20 23:12:29
8 [报告]
发表于 2012-01-01 20:37 |只看该作者
谢谢两位, 嵌入式linux可能没有这些命令 能不能说一下简单的实现, 还有文件的能不能独占打开?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2012-01-01 21:56 |只看该作者
最简单的就是改名。

论坛徽章:
2
戌狗
日期:2013-11-06 17:35:36寅虎
日期:2014-10-20 23:12:29
10 [报告]
发表于 2012-01-01 23:29 |只看该作者
谢谢各位, 我的需求可能没说清楚, 其实我想要的就是通过文件名来确定这个文件是否生成。 我倒是想到了一个办法 就是生成文件的进程 使用fcntl F_SETFL命令来设置锁,然后 主进程去读锁的状态。 在pc上试过是可行的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP