Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 写入磁带驱动器有什么不同吗?(简单C和客观C)_Objective C_C - Fatal编程技术网

Objective c 写入磁带驱动器有什么不同吗?(简单C和客观C)

Objective c 写入磁带驱动器有什么不同吗?(简单C和客观C),objective-c,c,Objective C,C,我知道使用普通C(比如openf语句和后续的标准C文件写入函数)写入磁带(比如软盘)驱动器与写入普通硬盘驱动器有根本的不同。我知道我必须小心我使用的块大小,等等。一些C经验丰富的人能确认我是对的吗?如果我是对的,请提供更多信息,例如如何在运行时确定正确的块大小等 和对于Objy-C程序员:编写文件的基础类抽象出这些细节,这样我就可以不再担心我写的是什么样的物理媒体了。例如,NSFileManager方法是否支持磁带机而无需我担心任何事情 注意:我正在编写一款现代Mac应用程序。然而,尽管磁带机

我知道使用普通C(比如openf语句和后续的标准C文件写入函数)写入磁带(比如软盘)驱动器与写入普通硬盘驱动器有根本的不同。我知道我必须小心我使用的块大小,等等。一些C经验丰富的人能确认我是对的吗?如果我是对的,请提供更多信息,例如如何在运行时确定正确的块大小等

<强>和对于Objy-C程序员:编写文件的基础类抽象出这些细节,这样我就可以不再担心我写的是什么样的物理媒体了。例如,NSFileManager方法是否支持磁带机而无需我担心任何事情


注意:我正在编写一款现代Mac应用程序。然而,尽管磁带机现在很少见(对吧?),但把它们拿走似乎是不明智的。同意?如果是这样的话,以及基金会摘要的细节(我希望它),我更喜欢基金会,而不是普通C,对吗?p>
openf
?这是什么操作系统?我通常只使用
open
read
write
、和
close
在大部分情况下写入磁带。我认为有一些
ioctl
命令要执行查找,它们需要一些时间,但就是这样

至于软盘,它们总是看起来像没有分区图的小卷
vfat
是常见的Linux卷类型IIRC。访问它们没有什么特别之处

另外,我可以诚实地说,除非你需要一个磁带机,否则你现在可以假定它们不存在。我在一年前摆脱了上一个,在工作中,系统管理员只使用了一些专门的程序(
tar
mt
,等等),而且都是脚本编写的现在没有人使用磁带作为辅助存储


此外,我现在使用硬盘,一台洛杉矶时间机器,作为备份。它们的速度更快,成本效益更高。

我认为unix文件系统的概念不会一直延伸到磁带机。通常,磁带驱动器的访问方式(使用特殊程序)与可安装介质完全不同。基金会可能会帮助您安装可安装的媒体,但不能使用磁带驱动器,而磁带驱动器正是用于备份的。 谷歌搜索一下mac的磁带机就会发现:这是从2009年开始的。我还没有在雪豹或狮子中找到任何关于磁带机的信息。
所以说真的,我想知道如果你甚至不能测试你的代码,你会如何访问它。

首先要确保你知道你使用的是哪种磁带机。标准的老式磁带机基本上具有无限(且可变)的数据块长度,而一些“智能”磁带机使用固定的数据块大小运行(或过去——可能有八年没有见过任何磁带机)。您正在编写备份软件吗?否则,不要担心磁带机,尤其是在mac上。我甚至都不知道还有哪种软件是受支持的。@LordT,不,我不是在写备份软件。我只是想百分之百地确定我支持那里的每一个驱动器。谁知道呢,也许有一天,某个奇怪的用户带来了一个磁带机…:斯塔普开车很有趣。软盘基本上就像只有一个分区的慢速普通磁盘。@Enchilada:你太担心了。发货时,如果有用户需要它来处理磁带,他们可以告诉你什么是磁带驱动器,甚至可能是它是如何工作的。对不起,我实际上指的是open,不是openf。(我对我的C有点生疏)尽管你可能是对的,也就是说我不应该担心这一点,但如果基金会自动地处理磁带机,那还是很好的。或者MacOSX最近干脆拒绝了这种设备?嗯…一般来说,基金会之类的东西不应该关心。这是代码模块化的一部分,也是Unix的理念,即使所有内容都像一个具有相同
打开
关闭
读取
写入
ioctl
接口的文件。所以,除非你的程序能用磁带机做些特殊的事情,否则什么都不要做。让用户使用诸如
mt
dd
之类的命令来处理其驱动器的详细信息。无论如何,他们会有更多的工具,也不会像你一样了解它的工作原理。磁带机不是由文件系统处理的。它们通常看起来像一个字节流,即一个查找时间非常糟糕的大文件。通常,一个驱动器有一系列设备文件,每个文件都是不同的选项组合。例如,默认设备文件将在关闭后倒带磁带,但如果设置了设备文件次要ID的低位,它将使磁带保持原样。用户找出他们想要的,选择合适的设备文件,并将其传递给程序;程序不需要知道这些。