「スワップヘッダーの読み取りに失敗しました:成功」とはどういう意味ですか?


9

Arch Linuxをインストールしようとしています(2014-04-01スナップショットから)。スワップファイルを作成して試しまし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

そして、私は:(私のコマンドラインの末尾。それで成功したか失敗したか?これはスワップファイルを設定する方法ではありませんか?

回答:


18

これはスワップファイルを設定する方法ではありませんか?

私はあなたが間に段差を逃したと思うchmodswapon

mkswap /mnt/sda2/swapfile

オキシモロミックエラーについては...

swapon:/ mnt / sda2 / swapfile:スワップヘッダーの読み取りに失敗しました:成功

これが文字通り意味することは、swaponコードにバグがあることですが、必ずしもその主要な機能に関連するものではありません。

Cライブラリ関数は、エラーコードを格納するグローバル変数errnoをよく使用します。関数自体は、エラー(エラー)が発生したことを示す値を返し、そのエラーの正確な性質がに格納されerrnoます。エラーの兆候が出た場合は、の値をチェックして、エラーのerrno内容を正確に確認できるという考え方です。

strerror()errno値(整数)を取り、それに関連する人間の言語の文字列を返すライブラリ関数もあります。それらの1つはSuccess、エラーコード0(つまり、エラーなし)に対応するです。

したがって、次のようなエラーが表示された場合は、次のような間違いを示しています。

  • エラーを取得し、裏でerrnoを0にリセットする別の関数を(正常に)呼び出し、次にerrnoを使用して、2番目の関数を呼び出す前に取得したエラーの詳細を判別します。

および/または

  • strerror()ある時点でerrnoの値が割り当てられているはずだった変数を渡す(以前のミスが発生するのを防ぐため)が、そうではなかった。

私ができれば、あなたは2つの賛成票を獲得します- mkswaperrno
アーロンD.マラスコ2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.