“ Read Swap Header ล้มเหลว: สำเร็จ” หมายความว่าอะไร


9

ฉันพยายามติดตั้ง Arch Linux (จากสแน็ปช็อต 2014-04-01) ฉันได้สร้างไฟล์ swap แล้วลองใช้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

นี่ไม่ใช่วิธีการตั้งค่าไฟล์สลับหรือไม่

ฉันคิดว่าคุณพลาดขั้นตอนระหว่างchmodและswapon:

mkswap /mnt/sda2/swapfile

ในฐานะที่เป็นข้อผิดพลาด oxymoromic ...

swapon: / mnt / sda2 / swapfile: read swap header ล้มเหลว: สำเร็จ

สิ่งนี้หมายถึงอย่างแท้จริงคือมีข้อบกพร่องในswaponรหัส แต่ไม่จำเป็นต้องเกี่ยวข้องกับการทำงานหลักของมัน

ฟังก์ชั่นห้องสมุด C มักจะใช้ประโยชน์จากerrnoซึ่งเป็นตัวแปรทั่วโลกที่เก็บรหัสข้อผิดพลาด ฟังก์ชั่นที่ตัวเองจะกลับมาเป็นค่าที่ระบุข้อผิดพลาดที่เกิดขึ้น (ข้อผิดพลาดใด ๆ ) errnoและธรรมชาติที่แท้จริงของความผิดพลาดที่จะเก็บไว้ใน แนวคิดคือถ้าคุณได้รับข้อผิดพลาดคุณสามารถตรวจสอบค่าของerrnoเพื่อดูว่ามันคืออะไร

นอกจากนี้ยังมีstrerror()ฟังก์ชันไลบรารีที่จะใช้ค่า errno (เป็นจำนวนเต็ม) และส่งคืนสตริงภาษามนุษย์ที่เกี่ยวข้อง หนึ่งในนั้นคือSuccessซึ่งสอดคล้องกับรหัสข้อผิดพลาด 0 (เช่นไม่มีข้อผิดพลาด)

ดังนั้นเมื่อคุณเห็นบางสิ่งเช่นนี้แสดงว่ามีข้อผิดพลาดเช่น:

  • รับข้อผิดพลาดจากนั้นเรียกใช้ฟังก์ชันอื่น (สำเร็จ) ซึ่งรีเซ็ต errno เป็น 0 ที่อยู่เบื้องหลังและใช้ errno เพื่อระบุข้อผิดพลาดเฉพาะที่คุณได้รับก่อนที่คุณจะเรียกใช้ฟังก์ชันที่สอง

และ / หรือ

  • ผ่านstrerror()ตัวแปรที่ควรได้รับการกำหนดค่าของ errno ในบางจุด (เพื่อป้องกันข้อผิดพลาดก่อนหน้านี้ที่เกิดขึ้น) แต่ไม่ใช่

คุณจะได้รับสอง upvotes ถ้าผม - The และmkswap errno
Aaron D. Marasco
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.