免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: linuxiang
打印 上一主题 下一主题

多个进程把日志记录在同一个文件的问题 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2006-08-08 12:26 |只看该作者
冲突与否取决于进程同时进行的多少。

你为了写LOG这一个附带的工作让一个进程BLOCK在那里是不对的,要么用LOG-SERVER,syslog.
在LINUX,UNIX,等  LOCKF是不必要的。因为不可能交叉。你看前面的帖子。

论坛徽章:
0
42 [报告]
发表于 2006-08-09 10:44 |只看该作者
多谢思一克的耐心教导,终于明白了加write调用的实质。原来还有内核来保证write即使被中断也是原子的

论坛徽章:
0
43 [报告]
发表于 2006-08-09 10:48 |只看该作者
感谢narkissos, 他有理论支持。

我什么理论也没有。

原帖由 linuxiang 于 2006-8-9 10:44 发表
多谢思一克的耐心教导,终于明白了加write调用的实质。原来还有内核来保证write即使被中断也是原子的

论坛徽章:
0
44 [报告]
发表于 2006-08-09 10:58 |只看该作者
感谢narkissos,感谢所有参与讨论的人,看来得学习一下内核的东西了,光看编程的会一知半解

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
45 [报告]
发表于 2006-09-15 08:41 |只看该作者
read和write会不会被中断,完全在于驱动怎么写

论坛徽章:
0
46 [报告]
发表于 2006-09-15 09:09 |只看该作者
”read和write会不会被中断,完全在于驱动怎么写“

和驱动没有关系。是KERNEL的功能。它们都会被中断,都会被强占(就是read进入KERNEL后就停止了,而运行其他进程了)。

但这根本不影响结果的原子性。

论坛徽章:
0
47 [报告]
发表于 2006-09-17 04:12 |只看该作者
原帖由 思一克 于 2006-8-8 12:26 发表
冲突与否取决于进程同时进行的多少。

你为了写LOG这一个附带的工作让一个进程BLOCK在那里是不对的,要么用LOG-SERVER,syslog.
在LINUX,UNIX,等  LOCKF是不必要的。因为不可能交叉。你看前面的帖子。


同意,写日志从来都不会想到lock.

论坛徽章:
0
48 [报告]
发表于 2006-09-17 08:44 |只看该作者
原帖由 思一克 于 2006-8-8 12:26 发表
冲突与否取决于进程同时进行的多少。

你为了写LOG这一个附带的工作让一个进程BLOCK在那里是不对的,要么用LOG-SERVER,syslog.
在LINUX,UNIX,等  LOCKF是不必要的。因为不可能交叉。你看前面的帖子。

你从哪里得出“不可能交叉”的结论的?大部分的系统是这样不表示所有的系统都一样。
另外,在生产系统中写日志并非完全是“附带”的工作

论坛徽章:
0
49 [报告]
发表于 2006-09-17 13:37 |只看该作者
To sunlan,

你如果不同意, 就找到一个write,read交叉的例子和所在系统吧.

论坛徽章:
0
50 [报告]
发表于 2006-09-18 00:15 |只看该作者
对NFS文件系统,write()操作不是原子的不知道是不是原子,至少在HPUX IA64上,这不是原子的(或者说那个版本的操作系统有BUG)。我做过测试,同时20个线程以APPEND方式写文件,一会就导致文件写串行了。
我还是怀疑文件写操作不是原子的,难道信号不能打断它?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP