he_fa 发表于 2013-07-18 17:29

linux c中有什么机制能让多条语句组成一个原子操作呢?

我的需求是:一个进程a在指定的文件夹下创建一个文件,然后往文件中添数据,直到数据写完为止。从创建文件到文件彻底写完不允许被打断。有另一个进程b在不停的读文件,文件在a写完之前不允许b读,因为某些原因我不能修改进程b的任何代码,这个需求该怎么实现呢?
用信号量等这些东西肯定不行了,因为不能修改b,创建文件时设置文件的权限也肯定不行,因为b读文件时假如b没有读权限,则b会返回说文件为空。有什么好的想法么???

timespace 发表于 2013-07-18 18:55

既然不能修改b同步方式,只能用一些折中的办法了,比如a在其他目录创建文件并写完,然后rename到目标目录供b读取。

he_fa 发表于 2013-07-18 19:17

回复 2# timespace


    不好意思,你的意思我有点不明白,你是说在其他文件夹下写文件,写完后复制到目标文件夹?还是,
在其他文件夹下写文件,写完后将目标文件夹删掉然后将临时文件夹的名字改为目标文件夹?
可以将临时文件直接重命名到目标文件夹?

he_fa 发表于 2013-07-18 20:07

回复 2# timespace


    查了下资料,确实是我的无知,确实是个办法,THANKYOU
页: [1]
查看完整版本: linux c中有什么机制能让多条语句组成一个原子操作呢?