写磁带结束记录linux

Posted

技术标签:

【中文标题】写磁带结束记录linux【英文标题】:Write magnetic tape end of record linux 【发布时间】:2016-10-11 15:01:14 【问题描述】:

任务是在一个文件条目中创建两条不同大小的记录。 我正在使用 python 3.4.5 进行测试:

import fcntl
import os
import struct

MTIOCTOP = 0x40086d01  # refer to mtio.h
MTSETBLK = 20

fh = os.open('/dev/st2', os.O_WRONLY )
fcntl.ioctl(fh, MTIOCTOP, struct.pack('hi', MTSETBLK, 1024))
os.write(fh, b'a'*1024)
fcntl.ioctl(fh, MTIOCTOP, struct.pack('hi', MTSETBLK, 2048))
os.write(fh, b'b'*2048)
os.close(fh)


[root@dev2 mhvtl]# tcopy /dev/st2
file 0: block size 4096: 1 records
file 0: eof after 1 records: 4096 bytes <<< should be 2 records
eot
total length: 4096 bytes
[root@dev2 mhvtl]# ^C

是否有一个 ioctl opt 代码可以在磁带上启动一条具有可变记录长度的新记录。 或者任何其他解决此错误的方法?

【问题讨论】:

【参考方案1】:

问题在于 tcopy,它使用设备上的块大小而不是检测它。

fcntl.ioctl(fh, MTIOCTOP, struct.pack('hi', MTSETBLK, 0))

在最后一次写入后允许 tcopy 按预期显示数据。

【讨论】:

【参考方案2】:

commands.getstatus('mt -f /dev/st2 fsf')之类的东西怎么样

【讨论】:

以上是关于写磁带结束记录linux的主要内容,如果未能解决你的问题,请参考以下文章

linux 中查找出一年前的文件并删除,怎么写命令

使用异步 forEach 循环磁带“测试退出而没有结束”错误

linux内核参数详解

video是啥意思?

继承?静态代理?写一个自己的动态代理吧

Video汉语是啥意思