“读取交换标头失败:成功”是什么意思?

“读取交换标头失败:成功”是什么意思?

我正在尝试安装 Arch Linux(来自 2014 年 4 月 1 日快照)。我已经制作了一个交换文件并尝试了swapon它,但是我收到了一条我不明白的错误(?)消息。

我已经执行了

fallocate -l 512M /mnt/sda2/swapfile
chmod 600 /mnt/sda2/swapfile
swapon /mnt/sda2/swapfile

输出是

swapon: /mnt/sda2/swapfile: read swap header failed: Success

:(在命令行的末尾有。那么到底是成功了还是失败了呢?这不是设置交换文件的方法吗?

答案1

这不是设置交换文件的方法吗?

chmod我认为您错过了和之间的一步swapon

mkswap /mnt/sda2/swapfile

至于矛盾的错误......

swapon:/mnt/sda2/swapfile:读取交换标头失败:成功

从字面上看,这意味着代码中存在错误swapon,但不一定与其主要功能相关。

经常使用的C库函数错误号,存储错误代码的全局变量。该函数本身将返回一个值,指示发生了错误(任何错误),并且该错误的确切性质将存储在errno.这个想法是,如果您收到错误指示,则可以检查 的值errno以准确了解它是什么。

还有一个strerror()库函数将采用 errno 值(它们是整数)并返回与之相关的人类语言字符串。其中之一是Success,它对应于错误代码 0(即没有错误)。

因此,当您看到类似的内容时,则表明存在错误,例如:

  • 收到错误,然后调用另一个函数(成功),该函数在幕后将 errno 重置为 0,然后使用 errno 确定在调用第二个函数之前遇到的错误的具体情况。

和/或

  • 传递strerror()一个本应在某个时刻被分配 errno 值的变量(以防止发生先前的错误),但实际上却没有。

相关内容