程序2:与程序1一起测试写FIFO的规则,第一个命令行参数是请求从FIFO读出的字节数
|
当请求写入的数据量大于PIPE_BUF时的非原子性:
|
当请求写入的数据量不大于PIPE_BUF时的原子性:
|
验证非阻塞写操作:
当请求写入的数据量大于PIPE_BUF时的非原子性:
|
请求写入的数据量不大于PIPE_BUF时的原子性:
|
不管写打开的阻塞标志是否设置,在请求写入的字节数大于4096时,都不保证写入的原子性。但二者有本质区别:
对于阻塞写来说,写操作在写满FIFO的空闲区域后,会一直等待,直到写完所有数据为止,请求写入的数据最终都会写入FIFO; 而非阻塞写则在写满FIFO的空闲区域后,就返回(实际写入的字节数),所以有些数据最终不能够写入。 对于读操作的验证则比较简单,不再讨论。