【问题标题】:How to manipulate with magnetic tapes in C/C++? [closed]如何在 C/C++ 中使用磁带进行操作? [关闭]
【发布时间】:2014-07-07 16:16:42
【问题描述】:

我需要在我们的磁带服务器上对磁带进行一些基本操作:

  • 加载磁带
  • 显示统计信息(相当于 Linux 中的mt stat 命令)
  • 在磁带块上读取/写入数据

我想通过 C/C++ 中的 API/库来执行这些任务,但我真的很难为初学者找到说明/教程。

你能以某种方式使用 sg 驱动程序、sg3_utils 中的函数或玩弄ioctl() 吗?

【问题讨论】:

  • 不清楚是否要编写在磁带服务器或其他地方运行的代码.....
  • @BasileStarynkevitch 我只需要测试从磁带写入和读取数据(更改其间的日期)...

标签: c++ c linux data-storage


【解决方案1】:

磁带通常是字符设备(通常是/dev/st*,参见st(4) - 其中列出了相关的ioctl(2) 参数- 等等...)。因此,请使用常见的 read(2)write(2) 系统调用(使用适当大小的缓冲区,例如 128K 字节)。

您可以考虑libtar(以支持tar 格式)。您绝对应该研究例如的源代码。 GNU tar(以及其中包含的mt)。

也许您的磁带服务器有自己的 API,或者一些 Web 界面(然后使用 libcurl)或一些网络协议。

【讨论】:

  • 关于磁带属性、倒带等,您使用ioctl()s 列在linux/mtio.h 头文件中(在设备节点上)。 mt-gnu 实用程序可能也很有趣;它是cpio 包的一部分。
  • 您能否给我一个简短的示例 C 代码示例(比如加载磁带),好吗?这真的对我有很大帮助......
  • 仔细研究st(4)ioctl(2) 手册页。也学习mt的源码
猜你喜欢
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 2014-04-25
相关资源
最近更新 更多