0

我有一个应用程序在高级别上同时执行 SCSI READ10 和 WRITE10 操作。当他们到达我的代码的较低级别时,他们在 /dev/sgXX 上调用 write(),然后调用 read()。不过,在接收我的应用程序命令的设备上,我得到了非常奇怪的结果,而且它们偶尔会发生。让这种低级同时 write() / read() 安全吗?或者我可能会将数据发送到 HBA 吗?

4

1 回答 1

2

根据定义,读写应该是安全的,但是:

1)读写,是否发生在同一个文件描述符上。如果没有,你系统中打开的文件表可能有多个偏移量,导致数据读写不一致。

2)如果您有一个数据块必须写入磁盘,您是否在 for 循环中使用 write ?这是不安全的,因为可以在两次写入调用之间启动其他读取或写入操作。看看 readv 和 writev 以原子方式写入大数据块。

于 2013-06-11T13:53:22.697 回答