Tiêu đề hoán đổi đọc không thành công: Thành công có nghĩa là gì?


9

Tôi đang cố gắng cài đặt Arch Linux (từ ảnh chụp nhanh 2014-04-01). Tôi đã tạo một tệp hoán đổi và thử swaponnó, nhưng tôi nhận được một thông báo lỗi (?) Tôi không hiểu.

Tôi đã thực hiện

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

và đầu ra là

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

và tôi có :(ở cuối dòng lệnh của tôi. Vậy nó đã thành công hay thất bại? Đây không phải là làm thế nào để thiết lập một tập tin trao đổi?

Câu trả lời:


18

Đây không phải là làm thế nào để thiết lập một tập tin trao đổi?

Tôi nghĩ rằng bạn đã bỏ lỡ một bước ở giữa chmodswapon:

mkswap /mnt/sda2/swapfile

Đối với lỗi oxymoromic ...

hoán đổi: / mnt / sda2 / exchangefile: đọc tiêu đề trao đổi không thành công: Thành công

Điều này có nghĩa đen là có lỗi trong swaponmã, nhưng không nhất thiết phải liên quan đến chức năng chính của nó.

Các hàm thư viện C thường sử dụng errno , một biến toàn cục lưu mã lỗi. Chính hàm này sẽ trả về một giá trị chỉ ra lỗi xảy ra (bất kỳ lỗi nào) và bản chất chính xác của lỗi đó sẽ được lưu trữ errno. Ý tưởng là nếu bạn nhận được một dấu hiệu của lỗi, thì bạn có thể kiểm tra giá trị của errnođể xem chính xác nó là gì.

Ngoài ra còn có một strerror()hàm thư viện sẽ lấy một giá trị errno (chúng là số nguyên) và trả về một chuỗi ngôn ngữ của con người liên quan đến nó. Một trong số đó là Success, tương ứng với mã lỗi là 0 (nghĩa là không có lỗi).

Vì vậy, khi bạn thấy một cái gì đó như thế này, nó chỉ ra một lỗi như:

  • Nhận được một lỗi, sau đó gọi một hàm khác (thành công) đặt lại errno thành 0 phía sau hậu trường, sau đó sử dụng errno để xác định các chi tiết cụ thể của lỗi bạn gặp phải trước khi bạn gọi hàm thứ hai.

Và / hoặc

  • Việc vượt qua strerror()một biến được cho là đã được gán giá trị của errno tại một thời điểm nào đó (để ngăn ngừa lỗi trước đó xảy ra) nhưng không được.

Bạn nhận được hai upvote nếu tôi có thể - mkswaperrno.
Aaron D. Marasco
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.