LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3469|回复: 20

多个进程同时对一个文件用fwrite,fread读写

[复制链接]
发表于 2005-9-2 22:04:59 | 显示全部楼层 |阅读模式
多个进程同时对一个文件用fwrite,如何才能保证正确的写,如果有进程同时读,会不会出现写到一半的数据被读出来。
发表于 2005-9-2 23:53:40 | 显示全部楼层
man 2 flock
locks.txt and mandatory.txt in /usr/src/linux/Documentation
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-3 10:20:47 | 显示全部楼层
flock 不是对unbuffer 的read /write用的吗?
第一个参数是 int filed 是文件描述符,
fread,fwrite的用的是FILE *
回复 支持 反对

使用道具 举报

发表于 2005-9-3 12:25:48 | 显示全部楼层
I know some functions like fread_unlocked, fwrite_unlocked
回复 支持 反对

使用道具 举报

发表于 2005-9-4 17:22:08 | 显示全部楼层
you don't get what i mean
use a seperate file as a lock
see APUE Section 14.3
回复 支持 反对

使用道具 举报

发表于 2005-9-4 17:46:10 | 显示全部楼层
or System V IPC - semaphore
check APUE Section 15.8

The following sentence is quoted from there:
" if we are sharing a single resource among multiple processes, we can use either a semaphore or a record locking"
回复 支持 反对

使用道具 举报

发表于 2005-9-6 17:37:29 | 显示全部楼层

这位兄弟对linux内核的调度方式没掌握好,建议好好学一下内核

这位兄弟对linux内核的调度方式没掌握好,建议好好学一下内核,
fopen 等属于系统调用,不完成退出的话其它进程根本没机会运行。
欢迎访问我的网站 www.myembed.com
回复 支持 反对

使用道具 举报

发表于 2005-9-6 17:53:50 | 显示全部楼层
Post by liqinliqin
这位兄弟对linux内核的调度方式没掌握好,建议好好学一下内核,
fopen 等属于系统调用,不完成退出的话其它进程根本没机会运行。
欢迎访问我的网站 www.myembed.com


fopen 等属于系统调用  是 open 吧。。。
不完成退出的话其它进程根本没机会运行 可抢占内核了?
回复 支持 反对

使用道具 举报

发表于 2005-9-6 18:39:15 | 显示全部楼层
Post by liqinliqin

fopen 等属于系统调用,不完成退出的话其它进程根本没机会运行。

不要误人子弟

fopen是library function
系统调用未完成时,进程可以被preempt掉。你说的那是DOS
回复 支持 反对

使用道具 举报

发表于 2005-9-7 11:52:31 | 显示全部楼层
Post by liqinliqin
这位兄弟对linux内核的调度方式没掌握好,建议好好学一下内核,
fopen 等属于系统调用,不完成退出的话其它进程根本没机会运行。
欢迎访问我的网站 www.myembed.com

是的,我说错了,fopen 属于库函数,但也只是加了buffer的open ,最后还是调用 open
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表